读书人

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

发布时间: 2013-02-27 10:48:11 作者: rapoo

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


#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,这才是安全的做法

读书人网 >C++

热点推荐