我正在编写一段代码,但我受到了一个疑问的攻击:如果我将 NULL 分配给该指针,分配给该指针的内存会发生什么?
例如:
A = new MyClass();
{...do something in the meantime...}
A = NULL;
空间仍然被分配,但没有对其的引用。该空间稍后会被释放、会被重用、会保留在堆栈中还是什么?
这是一个经典的泄密事件。
正如您所说,内存保持分配状态,但没有任何内容引用它,因此永远无法回收它 - 直到进程退出。
内存应该用delete来释放——但是使用智能指针(例如std::auto_ptr或boost::shared_ptr(或tr1::shared_ptr)来包装指针是一种更安全的使用指针的方法。
以下是使用 std::auto_ptr 重写示例的方法:
std::auto_ptr a( new MyClass() );
/*...do something in the meantime...*/
a.reset();
(您可以让 auto_ptr 实例超出范围,而不是调用 reset() )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)