读书人

delete1点疑问

发布时间: 2012-10-17 10:25:47 作者: rapoo

delete一点疑问
delete不是可以释放指定地址吗?
#include <iostream.h>
int main()
{
int a[20]={0};
cout<<a<<endl;
delete a;
cout<<a<<endl;;
cout<<*(a+1)<<endl;
return 0;
}
为什么我这样写后,a没有成为野指针,依然能够操纵a[1],而且a所存的地址不变?

[解决办法]
1 delete是用来 释放 new所分配的内存,不是你这么用的

2 delete之后,你继续使用这个内存,不一定会出错
内存delete只是告诉系统别人可以用这个内存了,
在别人使用之前,你还是可能继续使用而程序不报错

指针的难点,也就是你错误的地方,程序不是100%都检测到的,不然也不难了。

读书人网 >C++

热点推荐