我使用new在内存中为我的对象声明了一个指针,在退出的时候我使用如下的代码删除该指针,但是使用debug发现有内存泄漏的问题:
CMyClass* myOne = new CMyClass;
......
......
myOne = NULL;
delete myOne;
后来我把myOne = NULL;注释掉以后,就没有内存泄漏的报告了。
不知道为什么?
我看了其他的一些代码,通常是将myOne = NULL放在delete之后,
如果这样的话,myOne = NULL这一句还会有什么作用呢?
CMyClass* myOne = new CMyClass;
......
......
myOne = NULL;
delete myOne;
后来我把myOne = NULL;注释掉以后,就没有内存泄漏的报告了。
不知道为什么?
我看了其他的一些代码,通常是将myOne = NULL放在delete之后,
如果这样的话,myOne = NULL这一句还会有什么作用呢?
最好还是在delete后 将指针赋值 NULL 。
CMyClass myOne = new CMyClass;
...
if(myOne)
delete myOne;
myOne = NULL;
if(myOne != NULL)
{
delete myOne;
}
如果这样的话,myOne = NULL这一句还会有什么作用呢?
不是通常,而是应该这样,只有这样才是对了,你的用法错了。
delete之后,指针是没有定义的,为了如果下面还有使用的地方能够分辨指针是否有效,赋值为NULL。如果在析构函数中,倒没有必要了。
if(myOne != NULL)
{
delete myOne;
}
这样的写法