小编Aru*_*man的帖子

为什么没有释放这个全局堆对象?

我有这个代码:

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*

c++ heap

0
推荐指数
1
解决办法
81
查看次数

标签 统计

c++ ×1

heap ×1