c++, delete无法释放内存,太奇怪了
2009-12-02 15:33
225 查看
1:大家看看下面代码;居然打印两次“func1 exec !”;各位大师分析下是何原因!为何 delete obj;
obj = NULL;这两句没起作用;我觉得这种现象有点奇怪。问了几个人居然都无法解释。
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
class abc
{
public:
void func1()
{
printf( "func1 exec !/n" );
}
};
int main()
{
abc * obj = new abc();
obj->func1();
delete obj;
obj = NULL;
obj->func1();
return 0;
}
2:更奇怪的还在后面;看下面代码;类abc指针obj指向NULL; 居然也可以打印;
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
class abc
{
public:
void func1()
{
printf( "func1 exec !/n" );
}
};
int main()
{
abc * obj = NULL;
obj->func1();
obj = NULL;
obj->func1();
return 0;
}
期待各位大师的解释一下!
obj = NULL;这两句没起作用;我觉得这种现象有点奇怪。问了几个人居然都无法解释。
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
class abc
{
public:
void func1()
{
printf( "func1 exec !/n" );
}
};
int main()
{
abc * obj = new abc();
obj->func1();
delete obj;
obj = NULL;
obj->func1();
return 0;
}
2:更奇怪的还在后面;看下面代码;类abc指针obj指向NULL; 居然也可以打印;
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
class abc
{
public:
void func1()
{
printf( "func1 exec !/n" );
}
};
int main()
{
abc * obj = NULL;
obj->func1();
obj = NULL;
obj->func1();
return 0;
}
期待各位大师的解释一下!
相关文章推荐
- IE6-内存无法释放问题
- python里的del变量无法立刻释放内存的解决办法
- delete释放new[ ]开辟的内存
- Oracle无法正常释放共享内存
- 一个奇怪的GCD内存不释放的问题
- 用delete释放内存后,记得把指针赋空值啊!!!血的教训
- 动态内存分配与释放(new and delete)
- 动态内存分配与释放(new and delete)
- delete 与 delete[] 释放内存
- WPF的BitmapImage的文件无法释放及内存泄露的问题
- 模拟new[]和delete[]操作符开辟内存空间及释放内存空间过程
- //创建的HDC 释放后无法释放内存解决方法
- 模拟new[]和delete[]操作符开辟内存空间及释放内存空间过程
- c语言内存无法释放
- delete 指针之后 ,只是释放了指针指向的内存空间,指针不会自动置为NULL,还有delete 遇到指针为NULL时不会调用析构函数
- linux tomcat 内存无法释放
- C++在堆上申请和释放内存 - new & delete
- C与C++中内存分配释放-malloc,free,new,delete
- Android (SpreadTurm)无T卡下载文件导致无法释放手机内存
- 单链表的释放内存free(delete)的顺序