boost::checked_delete作用介绍

C++标准(版本5.3.5/5)允许使用delete删除incomplete class types指针,但如果class的析构函数有特定数据操作,或者具有自定义的operator delete成员函数,那么删除指针的操作将导致不确定后果。

这个问题同样存在于smart pointer的析构函数中,比如:boost::scoped_ptr<T>::~scoped_ptr,如果T是一个incomplete type,那么可能会造成极隐秘的诡异错误。

boost提供了2个函数模版与2个类模板工具来解决这个问题,在<boost/checked_delete.hpp>中定义了checked_delete and checked_array_delete 函数模版,以及checked_deleter and checked_array_deleter类模板。这些函数和类要求传给他们的参数是complete type,否则将导致编译错误。

boost文档:checked_delete.hpp

转载于:https://www.cnblogs.com/edwardlost/archive/2011/02/17/1956704.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值