C++:垃圾收集

use*_*343 0 c++

我有一个代码:

class A{
public:
void method1 (){
// do something
}
};

class B{
public:
void method2 (){
// do something
}
};

main(int argc, char* argv[])
{
A a ;
a.method1();
// free object a
B b ;
b.method2();
}
Run Code Online (Sandbox Code Playgroud)

现在,在创建b对象之前,我希望释放一个由a占用的内存.任何人都可以帮我怎么做?

Alo*_*ave 6

您只需要添加额外的范围{,}因为它a是一个自动/本地对象,一旦声明它的作用域结束,它将被自动销毁.

main(int argc, char* argv[])
{
    {                    //<--------------
        A a ;
        a.method1();
    }                    //<-------------
    B b ;
   b.method2();
}
Run Code Online (Sandbox Code Playgroud)

这在C++中也被广泛称为RAII.