目录结构:
一 通过案例引入智能指针
二 智能指针的作用
三 设计辅助类实现智能指针作用
四 设计类模板实现智能指针作用
五 使用stl和boost提供的标准智能指针类模板处理问题
一 通过案例引入智能指针
有如下的程序:
#include
using namespace std;
class exam
{
public:
exam(int *p):ptr§{}
exam(exam &obj)
{
ptr = obj.ptr;
}
~exam()
{
delete ptr;
}
private:
int *ptr;
};
int main()
{
exam obj1(new int(4));
exam obj2(obj1);
exam obj3(new int(10));
obj3 = obj2;
return 0;
}
程序中存在两个问题:
1 程序运行出现段错误,double free错误
2 同时也造成了内存泄露
为了较为方便解决类似上面的问题,引入了智能指针的概念
二 智能指针概念和作用
以下关于智能指针说法来之网络,大家可以动手自己搜索进一步查找概念
1 动态内存管理经常会出现两种问题:
一种是忘记释放内存,会造成内存泄漏;一种是尚有指针引用内存的情况下就释放了它,就会产生引用非法内存的指针
2 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。
智能指针类将一个计数器与类指向的对象相关