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