所谓饿汉式就是提前创建,而不是需要的时候再去创建。
#pragma once
class Singleton_Hungry
{
private:
Singleton_Hungry();
~Singleton_Hungry();
class Inner
{
public:
~Inner();
};
public:
static Singleton_Hungry* GetInstance();
private:
static Singleton_Hungry* m_instance;
static Inner m_inner;
};
#include "Singleton_Hungry.h"
#include <iostream>
using namespace std;
Singleton_Hungry* Singleton_Hungry::m_instance = new Singleton_Hungry();
Singleton_Hungry::Inner Singleton_Hungry::m_inner;
Singleton_Hungry::Singleton_Hungry()
{
cout << "Create Singleton_Hungry." << endl;
}
Singleton_Hungry::~Singleton_Hungry()
{
cout << "Destory Singleton_Hungry." << endl;
}
Singleton_Hungry* Singleton_Hungry::GetInstance()
{
return m_instance;
}
Singleton_Hungry::Inner::~Inner()
{
delete m_instance;
m_instance = nullptr;
}
所谓饿汉式,就是利用类的static的初始化在函数调用之前完成的特性,来保证不会为空,除非空间不够,创建不成功,这种概率极小。
饿汉式,是不存在多线程问题的。
检查是否内存泄漏可以使用 vld 插件