智能指针的目的是为了解决内存泄露问题
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);
}
}