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博客