所谓饿汉式就是提前创建,而不是需要的时候再去创建。
#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 插件
本文介绍了C++中饿汉式的Singleton模式实现,通过静态成员变量确保实例在类装载时创建,从而保证线程安全。同时,讨论了如何检查内存泄漏,提到了vld插件的使用。该实现不涉及多线程问题,并且通过代码展示了Singleton类的构造和析构过程。
2060

被折叠的 条评论
为什么被折叠?



