[求望5行代码]为什么delete后的内存空间还能被继续操作
[求看5行代码]为什么delete后的内存空间还能被继续操作?环境: mac ox 10.9.1 IDE: xcode 5.0.2int* pp n
[求看5行代码]为什么delete后的内存空间还能被继续操作?
环境: mac ox 10.9.1
IDE: xcode 5.0.2
int* pp = new int(100);
delete pp;
cout << (*pp) << endl;
(*pp) = 1; //申请的空间不是被释放了吗?怎么还能操作?
cout << (*pp) << endl;
程序输出:
100
1
请问是为什么? delete pp , 那么pp指向的空间应该被释放了呀,为什么还能修改里面的值?
[解决办法]希望能让看了这个帖子的人不要再问“内存释放了为什么还能使用”类似问题了。
int* p=new int[10]; //你向房东租了间房子,房东给你一把钥匙p
p[0]=1234; //你开始使用这间房子,扔了一堆你的东西
delete[] p; //你向房东退房了
//p=NULL; //你把钥匙还了,如果没有这句就是你没还钥匙
cout <<p[0]; //你明明退了房子,但没有还钥匙。然后还用这把钥匙开门进去。
//这时有三种结果:(1)房子还是老样子,你扔的东西都还在,就像你没退房一样
// (2) 房子已经被房东收拾过了,你的东西被扔掉了。
// (3) 房子已经被租给其他人了,你被当做小偷暴打了一顿。
最后,请记住:退房记得还钥匙。