11

私のプログラムでは、居住者のサイズがいくらか増加しています。ヒープの断片化が原因だと思います。なので使用予定です#pragma pack 1。ヒープの断片化を減らしますか?

他のオーバーヘッドはありますか?

私はそれのために行きますか?

4

5 に答える 5

10

Memory poolsと呼ばれる十分に証明された手法があります。特に、メモリの断片化を減らし、メモリ リークを防ぐように設計されています。また、メモリの断片化がプログラム機能のボトルネックになった場合に使用する必要があります。

「pragma pack 1」は、ヒープの断片化を回避するのに役立ちません。

'pragma pack 1' を使用して構造からパディング バイトを削除し、プログラム間のバイナリ構造の転送を支援します。

于 2014-05-06T07:50:39.443 に答える
6

それは単にオペレーティングシステムがどのように機能するかです。割り当てたメモリを解放しても、プロセス メモリマップからマップ解除されません。これは、OS がプロセス メモリ マップに新しいマッピングを追加する必要がないため、プロセスが再度メモリを割り当てる必要がある場合に備えて、OS からの一種の最適化です。

于 2014-05-06T07:30:58.897 に答える
5

#pragma pack N、(N-1)バイトのパディングを使用して、特定の方法で構造体のメンバーを整列するようコンパイラーに指示します。たとえば、N が 2 の場合、各文字は 2 バイトを占め、1 バイトが割り当てられ、1 バイトがパディングされます。N が 1 の場合、パディングはありません。構造体に 1 つの char と 1 つの int があり、合計 5 バイトである場合、バイト数が奇数になるため、これにより断片化が増加します。チェック: #pragma pack 効果

于 2014-05-06T07:17:17.127 に答える