首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个容易的对象删除不能?

2013-02-27 
一个简单的对象删除不能?????#include iostreamusing namespace stdclass T{public:void p(){cout

一个简单的对象删除不能?????


#include <iostream>
using namespace std;

class T
{
public:
void p()
{
cout << "I am T" << endl;
}
};


int main()
{
char a;
T* t1 = new T();
delete t1;
t1->p();

if (t1 != NULL)
{
cout << "t1 != NULL" << endl;
}
cin >> a;
return 0;
}


输出:
I am T
t1 != NULL

开始以为是编译器的问题.VC6和VC12都试了 ,结果一样一样滴..

杂回事呢??
[解决办法]
指针存地址,地址表明一个内存的位置,内存被释放不代表指针存的地址被修改为NULL。


[解决办法]
delete不会把指针赋值为NULL,此时的t1指针的空间还未被其它地方覆盖掉。所以内容还能引用
delete t1;
t1 = NULL;

[解决办法]
1,delete一般不会把指针设置为NULL
2,如果class里面某个成员函数不需要访问数据,光有函数,即不需要访问this指针里面的内容的话,该class类型的NULL指针也可以访问该函数。
[解决办法]
引用:
delete不会把指针赋值为NULL,此时的t1指针的空间还未被其它地方覆盖掉。所以内容还能引用
C/C++ code?12delete t1;t1 = NULL;

+1,这才是安全的做法

热点排行