私はこのコードを持っています:
class A {
public:
int x;
};
A *b;
void x() {
A a;
A *b = new A();
// delete b; // works. free b.
}
int main() {
x();
delete b; //not. why ?
return 0;
}
なぜ b は x() 内でしか解放できないのですか? main() ではない?b は手動変数であり、スコープにバインドされていないと思いました。valgrind で確認しました。
ありがとうございました。:)
アップデート:
今思い出した。グローバル b を次のように使用できます。
b = 新しい A();
次に、main() の delete b により、グローバル b を適切に削除できます。
*フェイスパーム*