Java のバックグラウンドを持つ私は、C++ でのメモリの割り当てについてまだ少し混乱しています。最初の 2 つのステートメントは正しいと確信しています。
void method() {
Foo foo; // allocates foo on the stack, and the memory is freed
// when the method exits
}
void method2() {
Foo *foo = new Foo(); // allocates foo on the heap
delete foo; // frees the memory used by foo
}
しかし、このようなものはどうですか?
void method3() {
Foo foo = *new Foo(); // allocates foo on the heap, and then copies it to the stack?
// when the method exits, the stack memory is freed, but the heap memory isn't?
}
foo
内のグローバル配列に追加したとしmethod3()
ます。foo
メソッドの終了後に のデータ メンバーの1 つにアクセスしようとすると、うまくいきますか? またmethod3()
、メモリリークが発生しやすいですか?
前もって感謝します。