我想在C ++中创建一个简单的Singleton类,其中包含指向其他类型的指针。
单身人士将在某个时刻成为该指针的拥有者。
所以这是删除Test类型对象并在Singleton析构函数上释放内存的好方法吗?
class Test{...};
class Singleton
{
public:
static Singleton& getInstance()
{
static std::unique_ptr<Singleton> instance(new Singleton());
return *instance.get();
}
void SetTest(Test* test);
Test* GetTest() const;
...
private:
Singleton(){}
~Singleton(){ if(test) delete test;} // ??
Test* test;
...
};
PS:我无法为Test对象使用智能指针。
答案 0 :(得分:1)
给这个问题一些结论:是的,通常可以像你提议的那样删除对象。但是,请注意以下警告:评论中已经指出:
test
到nullptr
。否则,您可能最终会尝试删除随机存储器地址。 (一些程序员老兄)nullptr
。删除nullptr
通常是安全的,不会做任何事情。 (Massimiliano Janes和here)