我阅读了开源项目X3C中用于删除指针对象的以下代码。
//! Delete pointer object.
/*!
\ingroup _GROUP_UTILFUNC
\param p pointer object created using 'new'.
*/
template<class T>
void SafeDelete(T*& p)
{
if (p != NULL)
delete p;
p = NULL;
*(&p) = NULL;
}
但我不知道这行的意思:
*(&p) = NULL;
在上面这行代码中(p = NULL;),p被赋值为NULL。我认为还有另一种方式可以实现同样的效果。
SafeDeleteArray
中没有奇怪地执行*(&x) = NULL;
这个操作。 - Seth Carnegie