newの挙動において分からない点があるので、質問させて頂きます。
環境はMicrosoft Visual Studio Community 2015です。
下記のC++のコードのaArray[i] = new int(0xaabbccdd);
の行にブレークポイントを貼って実行し、
iが1のときのブレーク後、1回ステップ実行したときの状態が下図です。
cpp
1#include <iostream> 2 3using namespace std; 4 5int main() { 6 int* aArray[3]; 7 8 for (int i = 0; i < 3; i++) { 9 aArray[i] = new int(0xaabbccdd); 10 } 11 12 for (int i = 0; i < 3; i++) { 13 delete aArray[i]; 14 } 15 16 return 0; 17}
iが0のとき、0x01367B68のアドレスに最初のnew intが行われ、
iが1のとき、0x01367B98のアドレスに次のnew int行われています。
0x01367B98からintのサイズ分の4byteの箇所のみ値が設定されると思っていたのですが、
その他にも様々な値の変更(メモリ1のウィンドウの赤字部分がiが0のときからの変更箇所)が行われいます。
これはどういった処理・値の変更が行われているのでしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。