我有这个代码:
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检查。
谢谢你。:)
更新:
现在我想起来了。我可以使用 global b :
b = 新的 A();
那么main()上的delete b就可以正确的删除全局b了。
*掌心*