c++ delete失败

就是发现delete后*p的值也没有变化贴上代码:环境为codeblocks16.01#include<iostream>usingnamespacestd;intmai... 就是发现delete后*p的值也没有变化

贴上代码:环境为codeblocks16.01

#include<iostream>
using namespace std;
int main()
{
int *p = new int;
*p = 5;
cout<<"原始值:"<<p<<endl;
cout<<"原始值:"<<*p<<endl;
delete p;
cout<<"delete后值:"<<p<<endl;
cout<<"delete后值:"<<*p<<endl;
return 0;
}
展开
 我来答
NormaL08
2017-10-06 · TA获得超过479个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:156万
展开全部
delete只是把内存返回给操作系统,意思是这个分配的int的空间可以继续被分配,但是里面的值并没有被改变。而且delete也不会把p变成nullptr。
匿名用户
2017-10-06
展开全部
应该是内存的问题吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GiraKoo
2017-10-06 · 还没有任何签名哦
GiraKoo
采纳数:3949 获赞数:11110

向TA提问 私信TA
展开全部
new和delete操作符能够申请堆区的空间。
当使用new进行空间申请时,会从链表中查找一块能够使用的空间,然后标记为占用。之后再进行new的操作,就不会重复申请到此段空间。
delete时,会将该空间标记为未占用,然后放回到链表中。这样其他的代码再申请new的时候,就可以继续使用这段空间。继续使用被delete的空间,就是操纵一个野指针,产生的结果是不可预知的,危险的。
如果想要执行空间的清除,就需要额外进行操作,对于性能会产生很大的影响,所以不需要进行空间的清空。与之相对的,在new新空间时,一定要注意空间的初始化,避免出现问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式