// SingleLeton.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <mutex>
#include <thread>
using namespace std;

class Singleton
{
public:
	static Singleton* getInstance();
	void Release();
protected:
	Singleton();
	~Singleton();
private:
	static Singleton* _instance;
	static mutex mtx;
	int* m_num;
};
Singleton* Singleton::_instance = nullptr;
mutex Singleton::mtx;//保证线程安全
Singleton* Singleton::getInstance()
{
	unique_lock<std::mutex> lock(mtx);
	if (_instance == nullptr)
	{
		_instance = new Singleton();
	}
	return _instance;
}

Singleton::Singleton()
{
	cout << "Singleton::Singleton()" << endl;
	m_num = new int[10];
	for (int i = 0; i < 10; i++)
	{
		m_num[i] = i;
	}
}

Singleton::~Singleton()
{
	cout << "Singleton::~Singleton()" << endl;
	delete[]m_num;
	cout << "delete[]m_num" << endl;
}

void Singleton::Release()
{
	if (_instance != nullptr)
	{
		delete _instance;
		_instance = nullptr;
	}
}

int main()
{
	Singleton* pSingleton = Singleton::getInstance();
	pSingleton->Release();
	system("pause");
    return 0;
}

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐