读书人

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

发布时间: 2012-03-17 19:06:28 作者: rapoo

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; 

读书人网 >C++

热点推荐