0

私が次のものを持っているとしましょう:

std::string TestFragmentation()
{
    std::vector<char> buffer(500);
    SomeCApiFunction( &buffer[0], buffer.size() ); // Sets buffer to null-terminated string data
    return &buffer[0];
}

ヒープにメモリを割り当てる上記のベクトルは、メモリの断片化の原因になりますか?断片化についての私の理解は、より大きく、より短期間の割り当ての間に、小規模で長期的な割り当てがある場合にのみ実際に発生するということです(またはその逆)。

この状況を時期尚早に最適化したくないので、このようなコードの一般的な考え方を聞きたいと思います。さまざまな専門家がスタックに大きなバッファを置くことを推奨していないことを知っています(結局のところ、それがヒープの目的です)。そのため、このようなコードを書くときに最初に考えるのは通常それです。断片化は通常、分析が必要なものです。私の心の状態はここにあるべきですか?

4

1 に答える 1

3

これがこのコードの機能を表現する最も自然な方法である場合は、この方法で行う必要があります。あなたが私たちに話していない非常に珍しい状況がない限り、メモリの断片化はまだあなたのレーダー画面にあるべきではありません。

于 2012-04-16T20:26:23.860 に答える