0

所以,我有两个全局变量,我想指向某个类的对象。我在一个 .h 文件中将它们声明为

extern Obj* pointer.

我在主函数中初始化该变量,如下所示:

pointer = new Obj();

稍后,我在 main 等内部调用了一些函数。我可以在 main 的末尾调用 delete 运算符,如下所示:

delete pointer;

我的主要,一般看起来像:

int main(){
    pointer = new Obj();
    //...
    delete pointer;
}
4

4 回答 4

2

是的,这在语法上是有效的。但是,以这种方式分配/取消分配全局指针将是一种不好的做法,因为这些指针很可能在其他地方共享并导致难以跟踪错误。

于 2013-08-23T00:27:27.457 回答
1

所以这是一种更简单的方法,不会泄漏:

int main()
{
    Obj o;
    pointer = &o;

    // ...


    // automatically freed at the end of the scope
    // you may also want to do
    // pointer = nullptr;
    // so cleanup code knows the object is already dead
}
于 2013-08-23T02:00:18.187 回答
1

是的,既然是在 中分配的main(),最后删掉main()就好了。

于 2013-08-23T00:27:03.700 回答
0

假设您的全局变量可能在多个地方使用,shared_ptr这将是一种更好的方法。

但为此,您必须检查访问它的最后一个资源并释放它。

此外,您可以考虑unique_ptr是否认为您将在一个地方使用它

于 2013-08-23T01:35:48.723 回答