标题:[求助] 如果new了一个东西后,delete了两次会怎样?
取消只看楼主
cedricporter
Rank: 1
等 级:新手上路
帖 子:49
专家分:3
注 册:2007-2-6
结帖率:100%
已结贴  问题点数:20 回复次数:3 
[求助] 如果new了一个东西后,delete了两次会怎样?
请问new了一个东西后,delete了两次会怎样?????

如:
int* ans = new int[100];
delete [] ans;
delete [] ans;


第一次delete后,如果ans指向的内存被其他东西占用,第二次delete会不会把后来其他程序占用的这段内存给释放了???

还有还有..第一次delete后,指针会指向什么地方....

引用一个人的程序/* Programe 2, by lily */
#include <iostream.h>
void main()
{
  int * p=new int[3];
  for (int i=0;i<3;i++) p[i]=i;
  delete []p;
  cout<<"p[0]="<<p[0]<<",p[1]="<<p[1]<<",p[2]="<<p[2]<<"\n";
  //ater p is delete,change the value of *p
  for (int j=0;j<3;j++) p[j]=j+100;
  cout<<"p[0]="<<p[0]<<",p[1]="<<p[1]<<",p[2]="<<p[2]<<"\n";
}
  结果还是出乎意料,*p的值居然还可以改变呢。结果是:
p[0]=-572662307,p[1]=-572662307,p[2]=-572662307
p[0]=100,p[1]=101,p[2]=102

为什么会这样???


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
还有还有,
如果
int* ans[2];
ans[0] = new int[100];
ans[1] = new int[100][100];
ans[2] = new int[100][100][100];

应该怎么delete??

             谢谢~~

[[it] 本帖最后由 cedricporter 于 2009-8-2 11:43 编辑 [/it]]
搜索更多相关主题的帖子: delete 释放 new 
2009-08-02 11:12
cedricporter
Rank: 1
等 级:新手上路
帖 子:49
专家分:3
注 册:2007-2-6
得分:0 
回复 4楼 CrystalFan
谢谢

[[it] 本帖最后由 cedricporter 于 2009-8-3 15:45 编辑 [/it]]

清脆的口琴聲﹏悠揚的旋律﹏然而︵每個音符︵?°都充滿了悲傷︵?°~↘
2009-08-03 15:41
cedricporter
Rank: 1
等 级:新手上路
帖 子:49
专家分:3
注 册:2007-2-6
得分:0 
回复 7楼 金多虾
那个好像会报错,貌似delete一个指针后再修改指针指向的值后,运行到最后编译器会报错.....

清脆的口琴聲﹏悠揚的旋律﹏然而︵每個音符︵?°都充滿了悲傷︵?°~↘
2009-08-04 15:14
cedricporter
Rank: 1
等 级:新手上路
帖 子:49
专家分:3
注 册:2007-2-6
得分:0 
回复 8楼 pangding
谢谢认真负责的版主~~

清脆的口琴聲﹏悠揚的旋律﹏然而︵每個音符︵?°都充滿了悲傷︵?°~↘
2009-08-04 15:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-281324-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.087822 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved