delete 和delete[] 小问题??
通常delete这样使用
int *p=NULL;
int *q=NULL;
p=new int[10];
q=new int;
delete[] p;
delete q;
我想知道 :delete[] q 虽然不会报错 但会不会有什么副作用??
问题点数:20、回复次数:9Top
1 楼piaochen_2002(执子之手,与子偕老!)回复于 2006-03-03 16:36:39 得分 0
不会!!Top
2 楼piaochen_2002(执子之手,与子偕老!)回复于 2006-03-03 16:37:02 得分 0
你看一下memory就知道Top
3 楼mao_kern()回复于 2006-03-03 16:38:28 得分 0
同时还要说明哈(举例 要程序,援引要有出处),^_^Top
4 楼windking21(想玩玩WOW 真的那么难吗)回复于 2006-03-03 16:40:11 得分 0
动态申请数组 delete掉必须
delete[] p;
delete p;倒是有问题呢Top
5 楼mao_kern()回复于 2006-03-03 16:49:34 得分 0
in the second alternative(delete array),the value of the operand of delete shall be the pointer value which resulted from a previous array new-expression.if not ,the bechavior is undefined.
c++标准中的 是不是具体结果和编译器有关??Top
6 楼piaochen_2002(执子之手,与子偕老!)回复于 2006-03-03 16:51:09 得分 10
delete q;(这个是默认释放一个),delete[]p默认所有的都释放Top
7 楼zzw820626(偶要分,偶要星星)回复于 2006-03-03 17:30:09 得分 0
没问题的Top
8 楼popy007(Twinsen)回复于 2006-03-03 18:09:15 得分 10
delete[]会在一个特定区域找到关于该对象数组的个数信息
接着执行数组中每个对象的析构函数,最后释放他们的内存。
delete不会查找个数信息,如果用它释放堆中的对象数组,
则它只调用第一个对象的析构函数,然后释放它们的内存。Top
9 楼DiabloWalkOnTheEarth(我想到个绝妙的昵称,只是地方太小,写不下)回复于 2006-03-03 18:16:28 得分 0
好像是从 木有问题 到小BUG 到COREDUMP 到系统崩溃都是有可能地 .....Top




