- 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;
}
运行截图:
使用注意事项
(1) 尽量不要使用“operator=”。如果使用了,请不要再使用先前对象。
(2) 记住 release() 函数不会释放对象,仅仅归还所有权。
(3) std::auto_ptr 最好不要当成参数传递(读者可以自行写代码确定为什么不能)。