変数が格納されている場所 (スタック、ヒープ、静的メモリ) を理解するのを手伝ってくれませんか。どうすれば特定できますか?直感的ではありませんが、何がどこにあるのかを画面に表示したいと思います。出来ますか?
これまでのところ、変数のアドレスを出力して、変数が格納されている場所を調べようとしました。しかし、それは私に多くを与えませんでした。ご覧いただき、アドバイスをいただけないでしょうか。私が間違いを犯した場合 (プログラムへの私のコメントを参照してください)、それについて教えてください。
#include "stdafx.h"
#include <iostream>
using namespace std;
int * p1 = new int [3]; // Static memory as it is a global array;
namespace P {int * p2 = new int[3];} // Static memory as it is a namespace;
namespace {int * p3 = new int[3];} // Static memory as it is a namespace;
using namespace P;
int _tmain(int argc, _TCHAR* argv[])
{
int * p4 = new int[3]; // Heap as there is a new operator.
static int * p5 = new int [3]; // Static memory as the variable is static.
cout << "p1: "<< p1 << endl;
cout << "p2: "<< p2 << endl;
cout << "p3: "<< p3 << endl;
cout << "p4: "<< p4 << endl;
cout << "p5: "<< p5 << endl;
cout << endl;
cout << "p5 - p4: " << p5 - p4 << endl;
cout << "p4 - p3: " << p5 - p4 << endl;
cout << "p3 - p2: " << p5 - p4 << endl;
cout << "p2 - p1: " << p5 - p4 << endl;
system("pause");
}