0

Linux でプロセスのメモリ スナップショットを生成するための Class ProcReader を作成しました。ProcReader は /proc/[pid]/status から情報を読み取り、このプロセスのメモリ スナップショットを生成します。このクラスをテストしたい。だから私は次のコードを書きます。

 ShowMemSnapShot();

    unsigned char* pDynArray = NULL;

    pDynArray  = new unsigned char[2048];

 ShowMemSnapShot();

    pDynArray[0] = 1;

    delete [] pDynArray;

 ShowMemSnapShot();

問題:

\proc[pid]\status の VmPeak と VmSize は変更されていません。私はこれを理解していません。なんで?

4

1 に答える 1

1

よくわかりませんが、割り当てのサイズに関係している可能性があります。proc エントリは、プロセスへのカーネル メモリの割り当てを監視し、x86 プラットフォームでは 4K のページで発行されます。また、内部で malloc を使用する新しいものは、より多くのヒープ領域が必要な場合におそらく大量のページを取得します。

まともなメモリのチャンクを割り当てることをお勧めします-たとえば1MB

pDynArray = 新しい符号なし char[0x100000];

于 2013-11-12T16:08:04.253 に答える