CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

提两个问题

楼主youxian()2003-02-03 15:53:19 在 VC/MFC / 基础类 提问

1.在以下使用new和delete运算符进行动态内存分配和释放的语句中,错误的是:  
  A.       char*p=new   char[10];  
            delete[]p;  
   
  B.       char*p=new   char[10];  
            if(p)  
            delete[]p;  
   
  C.       char*p=NULL;  
            delete   p;  
            p=new   char[10];  
            delete[]p;  
   
  D.       char*p;  
            delete   p;  
   
   
  2.     new运算符每次只能分配一个单位的存储空间吗???  
  问题点数:0、回复次数:4Top

1 楼XueBoy163(菜刀之恋)回复于 2003-02-03 16:10:48 得分 0

失败返回NULL。B正确Top

2 楼zhangdf96(zhangdf)回复于 2003-02-03 16:45:38 得分 0

1、错误的是D  
  因为new失败后返回NULL,delete可以对NULL操作,实际上什么也不做。  
  A、B、C的delete要么对NULL操作,要么对正常分配的内存操作,都没有问题,  
  但是D是对一个没有初始化的指针进行操作,后果无法预料。  
  2、不是,new实际上会调用类的构造函数,根据传入的参数来决定分配多少内存,这个参数可以是显式的,也可能是隐式的。例如:  
  char   *   p   =   new   char[20];//显式的,分配20个char大小的空间  
   
  struct   A  
  {  
        int   i;  
        long   l;  
        char   c;  
  };  
   
  struct   A*   pA   =   new   struct   A;//隐式的,分配sizeof(A)大小的空间  
   
  class   Class  
  {  
  public:  
          int   i;  
          long   l;  
  };  
   
  Class   *   pClass   =   new   Class();//隐式的,分配sizeof(Class)大小的空间Top

3 楼zhaolaoxin()回复于 2003-02-03 17:47:21 得分 0

zhangdf96(zhangdf)   说的对Top

4 楼duduwolf(嘟嘟狼)回复于 2003-02-03 17:50:10 得分 0

d错,d只是定义了一个char类型的指针,并没有分配任何内存单元Top

相关问题

  • 提两个问题
  • 提两个问题
  • 提两个问题!
  • 提两个菜鸟问题
  • 提两个简单问题!
  • 提两个小问题
  • 提个问提
  • 一个button如何提交两个form?
  • 跪求“用checkbox选择,两个button 提交(删除和提交)”
  • 提两个小问题,在线给分

关键词

  • 内存
  • null
  • 隐式
  • 分配
  • 操作
  • delete
  • 大小的空间
  • struct
  • char

得分解答快速导航

  • 帖主:youxian

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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