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

[求望5行代码]为什么delete后的内存空间还能被继续操作

2014-01-09 
[求看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) 房子已经被租给其他人了,你被当做小偷暴打了一顿。
最后,请记住:退房记得还钥匙。 

热点排行