C++ の new演算子について
C++ の new演算子について質問です。
new演算子を用いてクラスのインスタンスを作ったときに、
クラスのメンバー関数内で使用される自動変数はメモリの何処に割り付けられますか?
以下の回答の内のいずれかと想定しています。
・ヒープ領域
・スタック領域
たとえば、以下のように、クラスTestClassが定義されていたとします。
class TestClass {
int x; // int型(4byteとする)
char y; // char型(1byte)
long z; // long型(4byte)
void play(short);
}
void main(void){
TestClass* pt = new a();
play(10);
}
void TestClass:: play(short n){
char a;
long b;
static c;
for(int a = 0; a < 10; a++ ){
b = n * a;
cout << b;
}
}
main関数内で、インスタンスを作成した時点で
・TestClassのデータメンバx,y,z ⇒ ヒープ領域に確保(4+1+4 = 9byte。もしかしたらアライメント の関係で もう少し大きく領域を確保するかも)
・play関数で使われる変数n,a,bの領域は何処に確保されるのでしょうか?
変数cは静的変数用領域に保存される?
new演算子で作ったインスタンスはdelete演算子を使わないと消えないと勉強しました。(OSが消さない限り)
つまり、上記ではmain関数を抜けても、変数x,y,z,n,a,bの実体は残ると考えてよいのでしょうか?
そう考えると、n,a,bの実体はスタックではなく、ヒープ領域に確保する気がします、、
どうか、ご教授ください。
お礼
パソコンが壊れるとか聞いた気がするので心配でした。 だから質問したのですが解放ずれば問題なしというわけですね。 了解しました。