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

大家看看,好象没有一个对啊?

楼主Meuck(如果你相信什么,你就应当有所了解)2003-12-04 20:32:50 在 C/C++ / C++ 语言 提问

下面动态存储分配和释放使用正确的是:                                        
      A)     int     p;                                     B)     int     *p;    
  p=new   int;                                       p=new   int   (100);  
  …                                                     …  
  delete   p;                                           delete   *p;  
  C)     int     *p;                                   D)     int     *p;  
  p=new   int   (100);                             p=new   int[100];  
  …                                                     …  
  delete   []p;                                       delete   p;  
  问题点数:20、回复次数:26Top

1 楼wjyhl(VC◎先锋◎)回复于 2003-12-04 20:39:53 得分 0

当然是D   对了Top

2 楼qybao(阿宝)回复于 2003-12-04 20:44:58 得分 0

是的  
  D对的  
  D)     int     *p;  
  p=new   int[100];   //相当于p=(int   *)malloc(sizeof(int)   *   100);  
  …  
  delete   p;               //相当于free(p);  
  Top

3 楼abitz(阿奈)(老婆永远是对的!)回复于 2003-12-04 20:45:16 得分 0

D对吗?  
  好像真的没有对的啊Top

4 楼abitz(阿奈)(老婆永远是对的!)回复于 2003-12-04 20:50:08 得分 0

真的是这样?  
   
  哦,是不是pod类型的数据在new时不必调用vec_new,  
  直接使用::operator   new分配到内存;  
  而delete也不必调用vec_delete,直接释放内存啊?  
   
  不过怎么看也觉得不顺眼啊。。。Top

5 楼Sodier(逍遥神剑)回复于 2003-12-04 20:51:51 得分 0

我觉得没有对的Top

6 楼BAYERN(我有个愿望-要把月亮踹成直的,把太阳捏成方的)回复于 2003-12-04 21:36:27 得分 0

D对??扯淡么?  
  Top

7 楼heguobaoceo(awen)回复于 2003-12-04 21:53:52 得分 0

int     *p;                                    
      p=new   int[100];  
      delete   []p;          
  上面的才是正确的哦  
  可是提供的答案好象都没有  
  Top

8 楼byyyyy(苦行僧【苦】)回复于 2003-12-04 22:05:51 得分 0

int     *p;                                    
      p=new   int[100];  
      delete   []p;      
  应该是这样。因为分配10个int型的空间要用方括弧,是一个数组。  
  释放的时候也应该指明释放的是有一定大小的空间。Top

9 楼erlengzi2003(二愣子)回复于 2003-12-04 22:11:14 得分 20

int     *p;  
  p=new   int   (100);                              
  …                                                      
  delete   p;    
     
  或者  
                                     
  int     *p;  
  p=new   int[100];  
  …  
  delete   []p;  
   
  都是正确的!  
  Top

10 楼021850524(吸血鬼牌卫生巾)回复于 2003-12-05 03:04:37 得分 0

四个答案没一个对的.  
  只有erlengzi2003(二愣子)说的对.Top

11 楼sms88(白板http://shop34112882.taobao.com)回复于 2003-12-05 09:21:33 得分 0

没有一个是正确的  
  D   只能释放一个,而不是一百哦Top

12 楼byyyyy(苦行僧【苦】)回复于 2003-12-05 09:39:25 得分 0

p=new   int   (100);            
  和  
  p=new   int   【100】;  
  什么区别?  
  什么书上有这方面的?Top

13 楼byyyyy(苦行僧【苦】)回复于 2003-12-05 09:41:06 得分 0

p=new   int   (100);   这样可以嘛?Top

14 楼cguoyin(独钓寒江)回复于 2003-12-05 11:07:27 得分 0

int   就和CLASS   一样吗,用100初始吗  
  Top

15 楼expiry(寻阳)回复于 2003-12-05 23:21:11 得分 0

re:   byyyyy(苦行僧)  
  p=new   int   (100)就是吧p指向的值赋成100Top

16 楼michaelli(冰意)回复于 2003-12-05 23:25:23 得分 0

好象真的没对的Top

17 楼timepalette(时间调色板)回复于 2003-12-06 14:54:52 得分 0

明显是B对了吗.  
   
  先定义一个指针,然后分配内存,顺便把所分配的空间存上"100".  
  然后又释放内存.  
   
  为什么没人说B对??Top

18 楼zero00zero(零零)回复于 2003-12-06 23:05:16 得分 0

timepalette(时间调色板)   :  
  注意看,B   项删除时用的是   delete   *p; 这样相当于delete   100; 谁也不知道会发生什么事。  
  B   如果改成 delete   p; 就是是对的了。Top

19 楼pig_2000()回复于 2003-12-06 23:15:43 得分 0

d对了  
   
  delete   p没问题。  
   
  delete   []p是当p为指针数组时才可用。Top

20 楼anda1982(牧童)回复于 2003-12-06 23:25:07 得分 0

我认为D对的呀!因为再c++中  
  int   *p=new   int[100];//定义一个数组  
  delete   p;//p是指向数组的,当释放申请的空间时p从头指针开始释放  
  这是我个人的观点哦!!!Top

21 楼Wolf0403(废人:独活十年~心如刀割)回复于 2003-12-07 00:39:22 得分 0

 
  四个答案没一个对的.  
  只有erlengzi2003(二愣子)说的对.  
   
  new   int(100);   等于用   100   作为初始值去调用   int::int(const   int&)   copy-ctorTop

22 楼daiyike(伊可)回复于 2003-12-07 00:57:41 得分 0

同意   erlengzi2003(二愣子)   的意见!  
   
  C++中的new和delete有点类似于c中的malloc和free.不过不太清楚他们的区别,哪位能说说?Top

23 楼ThinkX(秋天的树)回复于 2003-12-07 01:03:14 得分 0

显然没有正确的,可能在A中少了一个*。Top

24 楼cchuocp(井底之蛙)回复于 2003-12-07 01:19:53 得分 0

不要争了,老师希望的答案是B,因为它是对的。  
   
  A编译通不过。  
  C和D虽然在分配和释放上不匹配。但事实上不会有任何错误发生,因为int类型没有去构函数。delete和delete[]的区别就是delete只对第一个调用去构函数,而delete[]对全部调用去构函数,int类型没有去构函数,所以两者实质上一样。  
   
  许多老师都是一知半解,还喜欢出一些稀奇古怪的题,简直误人子弟!!!!!  
  Top

25 楼ThinkX(秋天的树)回复于 2003-12-07 01:26:10 得分 0

我宁可认为是D,也不能说b是对的,  
  你的老师简直智利不健全。Top

26 楼Meuck(如果你相信什么,你就应当有所了解)回复于 2003-12-08 17:07:30 得分 0

这是我同学拿给我的题,我想可能是印错了吧.  
  之前看过   effectiveC++  
  所以我想大概答案我已知道了.  
  就是没有一个吧,我只是来确认一下.  
   
  谢谢各位^^  
   
  Top

相关问题

  • 在循环中c的continue好象basic中没有对应的,是不是呀
  • command对象如何释放空间呀?好象没有close这个方法。
  • eclipse好象没有IDE界面啊
  • .net 7.0中好象没有了 ClassWizard ?
  • 好象好久没有散过分了,@_@·····························
  • vs.net 的工具栏怎样实现,要继承toolbar对吗?可怎么分栏,.net好象没有coolbar
  • 到底stdafx.*有什么用,好象没有了是不行哦~~~~~~
  • bz2文件怎么解开,linux中好象没有bunzip2工具?
  • 人气好象不高,问题都没有什么更新的……
  • 好象没有加载applet小程序,为什么?

关键词

  • c++
  • 函数
  • 内存
  • 指针
  • 释放
  • 数组
  • delete
  • 调用
  • erlengzi2003
  • 二愣子

得分解答快速导航

  • 帖主:Meuck
  • erlengzi2003

相关链接

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

广告也精彩

反馈

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