永发信息网

C++ 中delete究竟在做什么???

答案:5  悬赏:50  手机版
解决时间 2021-04-28 01:19
C++ 中delete究竟在做什么???
最佳答案
delete p;
cout << "释放后"< cout <<"p的指向"<< p < cout <<"p所指向空间的大小"<<*p < * p = 9;
p被delete 后,p的值不会改变,还是原来的值,但不能再使用p指向的内存了,你的程序刚好在这里没有出错,但这时p指向的这块内存已经不属于你的程序的内存,如果其它的程序申请内存时也申请到了这块内存,你再对p的内存进行操作是危险的,因为你在改变其他程序的内存值。
全部回答
其实你的测试也说明了问题不是么,DELETE一个指针,这个指针变量本身并没有变化,但是它指向的内容会被清空,这时这个指针指向一个无意义的区域,直到它再度被赋值,所以DELETE只是一个堆空间的释放。
delete只是删除p初始的时候new出来的那一块内存区域.并不会把指针p删除,也不会把指针p所指向的地址删除,delete后需要把p=NULL,否则有可能指向一块被回收的内存,下次再次使用p的时候造成崩溃.
#include
void main()
{ int * p = new int ;
* p= 7;
cout <<"p的指向"<< p < cout <<"p所指向空间的大小"<< *p < delete p;
cout << "释放后"< cout <<"p的指向"<< p < cout <<"p所指向空间的大小"<<*p < * p = 9;
cout <<"p的指向"<< p < cout <<"p所指向空间的大小"<<*p < * p = 9;
int a =9;
p = &a;
cout <<"p的指向"<< p < cout <<"p所指向空间的大小"<<*p <}
指针delete是删除指针指向
但是 对于指针的使用 在delete之后 必须要赋值NULL
不然会形成野指针 造成程序崩溃
切记!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
那个被小鬼子曰本人抓走了的船长怎么样了
庄屋塆地址在哪,我要去那里办事
爱情伤感名句经典男生,描写动作的句子有哪些
找一部国外奇幻电影
我爱你~我心已属于你~今生今世不移~你要为
如何让自己变黑.除了晒太阳.
手机怎么坏了?
两夫妻性格不合,是否还应该在一起生活
士官转业怎么安置
wow延缓灾难怎么做
传奇当中的记忆一套应该如何使用?
蛀牙的地方不疼,是否可以在不去除神经线的时
求 一段无碰撞 极限 极品飞车13 神人视频
我发烧38度头有点晕,流鼻涕 算不算是甲型H1N
泰拳可以战胜中国功夫吗
推荐资讯
我和他相隔不远,可总是没感觉,不像热恋中的
深圳火王轮台专卖店在哪里啊,我有事要去这个
一个DNF的卡问题
为什么我的QQ密码不能在我的电脑上保存
朋友兼上司结婚25周年应送什么礼物
龚家桥我想知道这个在什么地方
纽曼F4和F6相比哪个性能和质量更好些!
女朋友给我发7.30元红包是什么意思
忠平吊篮脚手架在什么地方啊,我要过去处理事
梦与现时相同
韦德,詹姆斯,波什会带领迈阿密热火夺得2011
芭蕉在古诗词中的意象,梅,在古诗中有哪些意
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?