• auto_ptr 为c++的智能指针,主要解决的问题是C++的内存泄露问题,但是本质的原因是智能指针的本质其实是一个栈对象,所以才能被自动回收,假如为堆对象的话,则需要程序员自己回收。
  • 实例代码

​头文件​

#include "stdafx.h"

class Samples{
public:
Samples();
~Samples();
void doing();
private:
int m_SampleCount;
};

​实现文件​

// SmartPointers.cpp : 定义控制台应用程序的入口点。
// 智能指针使用

#include "stdafx.h"
#include "SampleDemo.h"

using namespace std;

Samples::Samples()
{
std::cout<< "Sample Init();" << endl;
}

Samples::~Samples()
{
std::cout << "Sample Release();" << endl;
}

void Samples::doing()
{
cout << "正在姑丈" << endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
std::auto_ptr<Samples> ss(new Samples());
ss->doing();
system("pause");
return 0;
}

运行截图:

std::auto_ptr简单使用_智能指针


使用注意事项

(1) 尽量不要使用“operator=”。如果使用了,请不要再使用先前对象。

(2) 记住 release() 函数不会释放对象,仅仅归还所有权。

(3) std::auto_ptr 最好不要当成参数传递(读者可以自行写代码确定为什么不能)。