(图片来源网络,侵删)
一、 为什么使用智能指针C++的内存管理是让很多人头疼的事,因为C++语言中没有垃圾回收机制,当我们通过new语句动态申请堆空间时,用完这个堆空间时就得用delete语句释放申请的堆空间,不然就会导致资源泄露;释放申请的堆空间,还得把指针置成空指针,不然会变成“野指针”指向“垃圾”内存,给程序带来诸多隐患;还有在使用new申请堆空间时,还得判断申请空间是否成功。总结起来使用智能指针有以下几点好处:1、 智能指针能够处理资源内存泄漏的问题;2、 智能指针能够处理空悬指针的问题;3、 智能指针能够处理由申请内存异常造成的资源泄漏;二、 智能指针的设计方案智能指针的设计要求是指针生命周期结束时主动释放堆空间,一片堆空间最多只能由一个指针标识,杜绝指针运算和指针比较;通过以下两点来实现这些要求:1、 通过类模板描述指针的行为,能够定义不同类型的指针对象;2、 重载指针特征操作符(->和),利用对象模拟原生指针的行为;通过以上的分析,就可以动手写代码了,代码如下几图所示:代码来自狄泰软件学院以上是智能指针的实现代码;实现了代码就可以写测试代码,来使用这个智能指针;以下是智能指针的测试代码。代码来自狄泰软件学院通过以上的测试,智能指针的使用达到我们的预期效果。同时也知道智能指针只能用来指向堆空间中的单个对象或者变量,而不能指向局部指针或变量;请关注“程序猿的自我修炼”,我们一起来修炼吧,成为中心目的大神。
0 评论