一个容易的对象删除不能?
一个简单的对象删除不能?????#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指针也可以访问该函数。
[解决办法]+1,这才是安全的做法