Mac OSでシンプルなC++プログラムを作成しています。私はちょうどトップが間違ったメモリ使用量を示している可能性があります
int main()
{
int *n = new int[50000000];
}
私はlldbでこのプログラムを起動し、n
が割り当てられている行にブレークポイントを置いています。他のタブでtop
を起動すると、そのメモリ使用量が336Kの事前割り当てであることがわかります。私がlldbの中でn
を実行すると、nの割り当てが行われるので、私は自分のメモリ使用量が上がることを期待しています。しかし、topは私のプログラムで使用されているのと同じ量のメモリを示しています。これの理由は何でしょうか?私はメモリ割り当てがC++でどのように起こるかを理解しようとしています。これが私がこれをやっている理由です。
私はmainのスコープを終了していません。私がもう一度上をチェックすると、私はメインの中括弧を閉じて座っている。
のために割り当てはおそらく唯一の仮想アドレス空間を確保している、あなたは、いくつかのプロファイリングツールが必要です。実際のメモリは、各ページに触れるまではOSによって割り当てられません。 4Kごとに1バイトを書き込むforループを追加します。 –