如果在我使用下面的单例实例后终止进程。是否存在内存泄漏?
- 如果是,我该如何解决这个问题?
- 我需要添加“destroyInstance”成员函数吗?
- 如果是,当多线程已经引用单例实例时,如何保证多线程安全?(我需要添加引用计数吗?)
我想知道如果我需要考虑所有这些,单例模式似乎非常复杂。
#include <mutex>
class Singleton
{
static Singleton *singletonInstance;
Singleton() {}
static std::mutex m_;
public:
static Singleton* getSingletonInstance()
{
std::lock_guard<std::mutex> lock(m_);
if(singletonInstance == nullptr)
{
singletonInstance = new Singleton();
}
return singletonInstance;
}
}