所以,我有两个全局变量,我想指向某个类的对象。 我将它们在一个.h文件中声明为
extern Obj* pointer.
我在main函数中初始化该变量,如下所示:
pointer = new Obj();
稍后,我在main等中调用一些函数。 我可以在main的末尾调用delete运算符,如下所示:
delete pointer;
我的主要人物通常看起来像:
int main(){
pointer = new Obj();
//...
delete pointer;
}
答案 0 :(得分:2)
是的,这在语法上是有效的。 但是,以这种方式分配/释放全局指针是不好的做法,因为这些可能会在别处共享并导致难以跟踪错误。
答案 1 :(得分:1)
是的,因为它是在main()
中分配的,所以在main()
的末尾删除它是好的。
答案 2 :(得分: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
}
答案 3 :(得分:0)
假设您的全局变量可能在多个地方使用,shared_ptr
将是更好的方法。
但为此你必须检查访问它的最后一个资源并取消分配它。
另外,如果您认为自己将在一个地方使用它,可以考虑unique_ptr