new关键字

new作用:

1、在堆中开辟指定数据类型空间

int* pn=new int; //new与delete搭配使用

new 操作符会根据后面的数据类型来推断所需空间的大小。

如果希望分配一组连续的数据,可以使用 new[]:

int *p = new int[10]; //分配10个int型的内存空间
delete[] p;

用 new[] 分配的内存需要用 delete[] 释放,它们是一一对应的。

2、调用指定类型的构造函数,再创建对象

Computer *computer=new Computer(intelCpu,inteVid,intelMem);

  3、返回创建的对象

        将再堆中开辟的指定空间   地址 赋值给 pn

C++释放new分配内存时带方括号delete[]和不带方括号delete的区别?

int *a = new int[10 * 1024 * 1024];
delete a;        // 方式1,不带方括号
delete [ ] b;    //方式2,带方括号

针对基本数据类型(int,bool…,方式1和2均可正常工作,不会造成能存泄露。

因为:基本的数据类型对象没有 析构函数 并且再new再分配内存时会记录分配的空间大小,则delete时能正确释放内存,无需调用析构函数释放其余指针。

针对自定义数据类型   ,方式1会报错,方式2正常

参考文章C++释放new分配内存时带方括号delete[]和不带方括号delete的区别_delete 后要不要加[]-CSDN博客 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值