12智能指针

智能指针的目的是为了解决内存泄露问题

1、引入

#include <iostream>
#include <memory>
#include <windows.h>
using namespace std;
//解决内存泄露

void cmen()
{
	while (1)
	{
		double *p(new double[1024 * 1024 * 10]);  //new堆内存,相当于malloc
		Sleep(3000);
		delete p;  //释放
		Sleep(3000);
	}
}

void main()
{
	cmen();
	cin.get();
}

我们经常在new之后忘记delete,而造成内存泄露,为此C++引入了智能指针

2、智能指针可以自动管理内存泄露

//智能指针
void autoptr()
{
	while(1)
	{
		double *p (new double[1024 * 1024 * 10]);  //new堆内存,相当于malloc
		auto_ptr<double>autop(p);  //接管,自动回收
		Sleep(3000);
	}
}
//智能指针
void autoptrnew()
{
	while(1)
	{
		Sleep(3000);
		unique_ptr<double>p(new double[1024*1024*10]);
		Sleep(3000);
	}
}

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/80993905
今日推荐