#include<iostream>
using namespace std;
class Box
{
public:
int x;
int y;
public:
Box(){ x = 0; cout << "gouzao" << endl;; }
Box(int a, int b){ x = a; y = b; cout << "gouzao" << endl; }
~Box(){ cout << "xigou" << endl;; }
};
int main()
{
Box *p = new Box(1, 2);
cout << p->x << endl;
delete p;
cout << p->x << endl;//delete之后,指针的指向没变,只是那块内存已经被释放了(告诉编译器这块内存可以被其他使用),所以指的是脏数据,而不是你想要的
getchar();
}
代码分析如上:delete p指针后,p指针的地址并未置空(NULL),而是不变,但p指针指向的地址的内容发生变化(监视窗口中对象成员x与y的值发生改变)
前后对比图如下:
delete p后的情况:
显然监视窗中x,y的值均发生了变化,然而delete p后未将p置空实际上是很危险的,因为p仍然可以引用,读者可以自行尝试,因而往往在delete p;后加一句p=NULL;以确保安全性。