商业机会 产品大全 企业名录 我商务中心 | | 手机站 网址:xadnitpx1.qy6.com C++中delete和delete[]的区别_西安达内科技
西安达内科技
联系人: 先生 (seo)
电 话:029-82222601
手 机:

产品目录

C++中delete和delete[]的区别

留言询价
详细说明

      C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[].下面西安达内C++培训(http://www.xatarena.cn/c/index.jhtml)讲师就详细为大家介绍。



关于 new[] 和 delete[],其中又分为两种情况:

(1) 为基本数据类型分配和回收空间;

(2) 为自定义类型分配和回收空间。



  请看下面的程序。

  #include <iostream>;

  using namespace std;

  class T {

  public:

  T() { cout 《 "constructor" 《 endl; }

  ~T() { cout 《 "destructor" 《 endl; }

  };

  int main()

  {

  const int NUM = 3;

  T* p1 = new T[NUM];

  cout 《 hex 《 p1 《 endl;

  // delete[] p1;

  delete p1;

  T* p2 = new T[NUM];

  cout 《 p2 《 endl;

  delete[] p2;

  }



  大家可以自己运行这个程序,看一看 delete p1 和 delete[] p1 的不同结果。



  从运行结果中我们可以看出,delete p1 在回收空间的过程中,只有 p1[0] 这个对象调用了析构函数,其它对象如 p1[1]、p1[2] 等都没有调用自身的析构函数,这就是问题的症结所在。如果用 delete[],则在回收空间之前所有对象都会首先调用自己的析构函数。



  基本类型的对象没有析构函数,所以回收基本类型组成的数组空间用 delete 和 delete[] 都是应该可以的;但是对于类对象数组,只能用 delete[].对于 new 的单个对象,只能用 delete 不能用 delete[] 回收空间。



  所以一个简单的使用原则就是:new 和 delete、new[] 和 delete[] 对应使用。

 
西安达内科技
先生 (seo)  
电  话: 029-82222601
传  真:
移动电话:
公司地址: 中国陕西西安市陕西省西安市兴庆南路10号交大出版大厦6层
邮  编:
公司主页: http://xadnitpx1.qy6.com.cn(加入收藏)
 



其它商业信息
 1 直接到第
20 条信息,当前显示第 1 - 20 条,共 1

公司首页 | 公司介绍 | 产品展示 | 供求商机 | 诚信档案 | 联系方法 | 加入收藏
西安达内科技 公司地址:中国陕西西安市陕西省西安市兴庆南路10号交大出版大厦6层
先生 (seo) 电话:029-82222601 传真:
免责声明: 以上所展示的信息由会员自行提供,内容的真实性、准确性和合法性由发布会员负责,企业录对此不承担任何责任。如有侵犯您的权益,请来信通知删除。

机械 仪器 五金 电子 电工 照明 汽摩 物流 包装 印刷 安防 环保 化工 精细化工 橡塑 纺织 冶金 农业 健康 建材 能源 服装 工艺品 家居 数码 家电 通讯 办公 运动、休闲 食品 玩具 商务 广告 展会 综合
提供服务支持 © 企业录 | 移动端