0

たとえば、数千の要素を持つ int 配列があります。

static int st_indices[9999] = {
   0,  27,  26,    1,  41,  71,    0,  26, 101,    0, 101, 131,    0, 131,  72,
   1,  71, 176,    2,  56, 206,    3, 116, 236,    4, 146, 266,    5, 161, 296,
......
};

int* dy_indices = new int[9999] {
   0,  27,  26,    1,  41,  71,    0,  26, 101,    0, 101, 131,    0, 131,  72,
   1,  71, 176,    2,  56, 206,    3, 116, 236,    4, 146, 266,    5, 161, 296,
......
};

上記の2つの方法、特にメモリ使用量の中括弧の値の違いは何ですか?

st_indices はプログラムが終了するまで (STACK)、dy_indices はdelete [](HEAP) 後に解放されることを知っています。それとも、スタックと .DATA セグメントに関する質問ですか?

4

2 に答える 2

0

@Dr.Kameleonの回答から、 OSが実行可能ファイルの内容を読み取り、メモリにロードすることを知りました。

つまり、中括弧内のデータはメモリの .TEXT セグメントにロードされます。仮想メモリ/ページングを考慮しない場合、データをファイルに入れてから読み込むと、メモリ使用量が削減されます (OpenGL アプリの場合)。

于 2014-08-15T18:39:02.357 に答える
0

静的はコンパイル時に行われます..(メモリ量の設定、別名STACK)

動的は実行時に行われます (動的割り当て、システムの制限に応じて任意のサイズにすることができます、別名 HEAP)

于 2014-08-15T06:15:55.807 に答える