首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

boost 智能指针一个小小的有关问题

2012-03-17 
boost 智能指针一个小小的问题要是代码这样写:int * p{boost::shared_ptrint a(new int(10))p a.get

boost 智能指针一个小小的问题
要是代码这样写:

int * p;
{
boost::shared_ptr<int> a(new int(10));
p = a.get();
}
*p = 11;//请问这样还有用吗?智能指针a已经离开它的生存期,我分析了a.get代码实现,仅仅是return了这个int的地址,并没做引用计数之类的保护,那最后这一句还是合法吗?会不会中括号之内智能指针已经内部delete了这个int?

[解决办法]
是的,*p = 11;这样是非法的
[解决办法]
是啊,智能指针自己都已经过了生命期了,那肯定要把自己管理的内存都给释放掉啊。
不然你还想要怎么样?
[解决办法]

C/C++ code
    std::shared_ptr<int> p;    {        std::shared_ptr<int> q(new int(5));        p = q;    }    int i = *p; 

热点排行