CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

delete的问题,狂简单!

楼主king555(king)2006-03-01 21:05:07 在 C/C++ / C++ 语言 提问

程序中有这样代码:  
  int   *a,*b;  
  bool   *c;  
  a=new   int[4];  
  b=new   int[5];  
  c=new   bool[6];  
   
  我的问题是释放的时候我可否写成这样:  
  delete[]   a,b,c;  
  还是应该写成:  
  delete[]   a,b;  
  delete[]   c;  
   
   
   
   
  小弟才开始学c++,概念还不是很清,请各位指点,谢谢! 问题点数:20、回复次数:16Top

1 楼OpenHero(开勇)回复于 2006-03-01 21:07:39 得分 2

不能Top

2 楼zh2817()回复于 2006-03-01 21:09:56 得分 2

的确Top

3 楼king555(king)回复于 2006-03-01 21:16:13 得分 0

那应该怎么写?  
   
  如果这样写:  
  delete[]   a,b,c;  
  是错的,那这条语句代表什么意思?实际做了什么操作。  
  为什么编译时候它是对的?  
  Top

4 楼cunsh(村少)回复于 2006-03-01 21:28:46 得分 0

逗号运算呀Top

5 楼noOnlyCode(不错,偶就是传说中高数上下册都考80多分的牛逼人物!)回复于 2006-03-01 21:52:41 得分 2

如果这样写:  
  delete[]   a,b,c;  
  是错的,那这条语句代表什么意思?实际做了什么操作。  
  为什么编译时候它是对的?  
  --------------------------  
  delete[]   a,b,c;  
  上句与:"delete   []a;  
                    b;  
                    c;"  
  三句等价。所以编译不报错。(猜的,没运行。有点懒,赎罪!)  
   
  delete   []a;  
  delete   []b;  
  delete   []c;  
  不就可以了吗?  
  Top

6 楼bm1408(向va_list学习~不用VC好多年~)回复于 2006-03-01 22:12:55 得分 2

抛开能与不能,从程序可读性以及简洁性,你不能那种做Top

7 楼king555(king)回复于 2006-03-01 22:15:51 得分 0

逗号运算?  
  还是不太明白。  
  有没有人说明白一点?  
  我一开始以为delete[]   a,b,c;       类似声明,如int   a,b,c;  
  那我要是程序里有10、20个的new[]操作,难道要一个个delete[]啊  
  这个也太烦了吧,  
  呵呵  
   
  请大侠赐教Top

8 楼csusuntao(孙涛)回复于 2006-03-01 22:49:57 得分 0

我个人认为完全是可以的!  
  delete[]     表示后面释放的都是数组吗!  
  当然可以!Top

9 楼lei001(太极)回复于 2006-03-02 00:20:30 得分 2

还是分开写好点,写出来的代码有可能别人也要看的Top

10 楼king555(king)回复于 2006-03-02 10:59:17 得分 0

有点奇怪的是,我用delete[]     a,b,c;  
  用boundscheck,说是有内存泄漏,而一个一个写delete   []   a;delete[]   b;delete[]   c;  
  就没有了.  
  难道真的不可以写成delete[]     a,b,c;??????????  
  困惑啊,困惑,  
  有没有大侠遇到这个情况的??????Top

11 楼DiabloWalkOnTheEarth(我想到个绝妙的昵称,只是地方太小,写不下)回复于 2006-03-02 11:14:41 得分 2

理所当然不行。。。。Top

12 楼willingbupt(buptcsdn)回复于 2006-03-02 12:58:41 得分 2

我个人认为有点想  
  int   *a,b,c;声明,b,c都不是指针。  
  Top

13 楼Muf(沐枫)回复于 2006-03-02 13:34:27 得分 2

delete[]a,b,c;  
  这一句仅对a进行delete。而b,c则不进行任何操作。  
  delete[]a,b,c;   实际上等同于delete[]a;  
  Top

14 楼js_gary(李祥)回复于 2006-03-02 13:41:00 得分 2

不能delete[]a,b,c;  
  應該分開寫,這樣寫正正如樓上所說等同于delete[]a;Top

15 楼s_hluo(笨笨熊)回复于 2006-03-02 13:43:26 得分 2

delete是一种操作,   并不是类型,   它不像声明int   i,j,k;一样!  
  所以delete   []a,b,c;实际上相当于delete   []a;     a     ;     bTop

16 楼adintr(www.adintr.com)(风流总被雨打风吹去)回复于 2006-03-02 13:50:50 得分 0

逗号表达式,对用逗号分开的表达式依次求值,整个表达式的值为其中最后一个表达式的值:  
  比如     x   =   (2,   3,   4)   //   结果   x   =   4  
  逗号优先级是很低的,所以   x   =   2,   3,   4     等于   (x   =   2),   3,   4     x   被赋值为   2,   整个语句返回   4   被丢弃。  
  同样   delete   []   a,   b,   c   等价于   (delete   []   a),   b,   c   delete[]   操作并不会在   b,c   上执行。  
  Top

相关问题

  • 简单的问题,delete,and update
  • 关于delete,十分简单。
  • 狂简单,狂急!!!
  • 关于new和delete的简单问题!
  • 关于new和delete的简单问题。
  • 简单的new和delete问题
  • 问一个简单的DELETE问题
  • 关于new 和delete的简单问题
  • Javascript狂简单题,散分!
  • ◎◎◎◎◎◎◎◎◎◎◎◎超简单狂送分100,用户控件的简单问题!◎◎◎◎◎◎◎◎◎◎

关键词

  • 语句
  • 编译
  • delete
  • 逗号
  • 表达式
  • 操作
  • 程序
  • 不能
  • 时候
  • 声明

得分解答快速导航

  • 帖主:king555
  • OpenHero
  • zh2817
  • noOnlyCode
  • bm1408
  • lei001
  • DiabloWalkOnTheEarth
  • willingbupt
  • Muf
  • js_gary
  • s_hluo

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo