很抱歉如果这个问题已经有明确的答案了,但我对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引用计数的问题,但是浏览源代码似乎不能为我解决这个问题。希望更有经验或知识的人能帮助我。提前致谢。