智能指针概念和使用

本文介绍了智能指针的概念,作用以及如何通过辅助类和类模板实现智能指针,以解决内存管理和避免双重释放的问题。文章还展示了如何使用STL的auto_ptr和Boost的shared_ptr来处理智能指针的实例。
摘要由CSDN通过智能技术生成

目录结构:

一 通过案例引入智能指针
二 智能指针的作用
三 设计辅助类实现智能指针作用
四 设计类模板实现智能指针作用
五 使用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)。
智能指针类将一个计数器与类指向的对象相关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值