智能指针的设计思想


在代码编写过程中,我们不可避免的带入一些bug,某个指针过期失效后,并没有及时将对应的内存释放,这样就造成了内存泄漏

如何避免类似问题的出现,除了代码编写过程中注意,其次可以通过智能指针帮我们做一些类似的工作

int test()
{
	char *pStr1 = (char *)malloc(100);
	if(pStr1 == NULL)
		return 0;
		
	char *pStr2 = (char *)malloc(200);
	if(pStr2 == NULL)
		return 0;  //return 的时候,没有释放 pStr1 对应的内存
}

函数 test() 退出 pStr1 从栈空间中失效,但对应的内存没有及时释放掉,如果 指针在失效的同时,释放掉对应的内存就太好了

我们知道类对象的析构函数可以实现这个功能,但是一个普通的指针不具备对象的属性和功能,

此时,我们可以通过把普通指针 对象化 来实现该功能,具体的对象化实现是通过 类模版 来完成,以支持不同类型的指针,

这样我们不小心忘记释放的内存,智能指针就帮我们完成了

智能指针设计的思想总结:

将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不同基本类型的需求),
  并在析构函数里编写delete语句删除指针指向的内存空间。

一个简单图片展示智能指针之间的转化 参考网址:http://www.jianshu.com/p/ad4dba29d624

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值