【发布时间】:2010-09-13 00:53:47
【问题描述】:
很抱歉,如果在某处明确回答了这个问题,但我对我在网上阅读的 boost 文档和文章有点困惑。
我看到我可以使用 reset() 函数来释放 shared_ptr 中的内存(假设引用计数为零),例如,
shared_ptr<int> x(new int(0));
x.reset(new int(1));
我相信这会导致创建两个整数对象,并且在这两行结束时,等于零的整数将从内存中删除。
但是,如果我使用以下代码块会怎样:
shared_ptr<int> x(new int(0));
x = shared_ptr<int>(new int(1));
显然,现在 *x == 1 为真,但原始整数对象(等于零)会从内存中删除还是我泄露了该内存?
在我看来,这将是赋值运算符减少 shared_ptr 的引用计数的问题,但看一眼源代码似乎并不能解决我的问题。希望更有经验或知识渊博的人可以帮助我。提前致谢。
【问题讨论】:
标签: c++ boost shared-ptr