【发布时间】:2013-03-27 03:34:06
【问题描述】:
我目前正在大学学习 C++ 中的指针。我编写了一个程序,它是一个指向子对象链表的对象二叉树。如果我的措辞正确的话。无论如何,我的程序似乎工作正常,但我无法解决如何测试指针删除的问题。
例如,我对二叉树的单个对象的删除函数是:
void EmployeeRecord::destroyCustomerList()
{
if(m_oCustomerList != NULL)
{
delete m_oCustomerList;
m_oCustomerList = NULL;
}
}
打印我的树时,所有内容都会填充并正确移除(这意味着树在每次删除节点时都保持完整)......但是我如何确认释放的内存会发生什么?我知道,由于我将指针 *m_oCustomerList 设置为 NULL,因此我可以在先前填充的对象上测试 NULL 值,但实际内存会发生什么情况?
我正在使用 Visual Studio/C++ 并且已经读到调试器将使用从 0xCC 开始的代码来释放内存...但我似乎无法弄清楚如何使用该信息。
【问题讨论】:
-
为什么要验证?您是否怀疑编译器是否正常工作?
-
您可以使用Valgrind 来帮助检测和调试内存泄漏。
-
stackoverflow.com/questions/15730827/… 可能重复?我会使用 smart_ptrs 或在析构函数中添加一些东西以进行调试/测试以确认删除。
-
确实没有理由验证
delete是否有效。确实如此。删除时内存会发生什么取决于编译器设计者,但通常它会返回到堆中以供将来使用。 -
您也可以使用垃圾收集器,根本不必删除。
标签: c++