我有这个代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
为什么b只能在x()中释放?不是主()?我认为b是一个手动变量,而不是范围限制.用valgrind检查.
谢谢.:)
更新:
现在我记得.我可以使用全局b:
b = new A();
然后main()上的删除b可以正确删除全局b.
*facepalm*