这是从垃圾收集线程中衍生出来的,我认为这是一个简单的答案,它产生了很多关于某些特定智能指针实现的评论,所以看起来值得开始一篇新帖子.
最终问题是C++中智能指针的各种实现是什么,它们如何比较?只是简单的利弊或异常,并找到你可能认为应该工作的东西.
我已经发布了一些我已经使用过或者至少掩饰过的实现,并考虑使用下面的答案,并且我对它们的差异和相似性的理解可能不是100%准确所以请随意根据需要检查或纠正我.
目标是了解一些新的对象和库,或者纠正我对已经广泛使用的现有实现的使用和理解,并最终为其他人提供合适的参考.
我正在大学里学习C++中的指针.我编写了一个程序,它是一个二进制对象树,指向一个链接的子对象列表.如果我甚至是正确的措辞.无论如何,我的程序似乎工作正常,但我无法绕过如何测试指针删除.
例如,我对二叉树的单个对象的删除函数是:
void EmployeeRecord::destroyCustomerList()
{
if(m_oCustomerList != NULL)
{
delete m_oCustomerList;
m_oCustomerList = NULL;
}
}
Run Code Online (Sandbox Code Playgroud)
打印我的树时,所有内容都会填充并正确取下(意味着每次删除节点时树都保持不变)...但是如何确认解除分配的内存会发生什么?我知道,因为我将指针*m_oCustomerList设置为NULL,我可以测试先前填充的对象上的NULL值,但实际内存会发生什么?
我正在使用Visual Studio/C++并且已经读过调试器将使用从0xCC开始的代码来释放内存......但我似乎无法弄清楚如何使用该信息.