C++ new


You
You 2023-12-31 02:19:28 63289 赞同 0 反对 0
分类: 资源
在堆上分配内存,要使用 new 关键字,后面跟一个数据类型。如果需要对分配出的内存进行初始化,则在类型后面加上一个括号,并带有初始值。new 的语法格式如下:

C++ new

在堆上分配内存,要使用 new 关键字,后面跟一个数据类型。如果需要对分配出的内存进行初始化,则在类型后面加上一个括号,并带有初始值。new 的语法格式如下:

new 类型(初值);

为了后续方便使用申请的堆内存,通常会使用一个指针指向 new 的结果,例如:

  • int *p = new int(5);

上面的语句在堆上分配一块整型变量的内存,并使指针 p 指向这块内存。括号中的 5 为这块内存提供一个初始值,该内存分配成功之后,会用 5 去初始化,因此 *p 的值为 5。

当然,在堆上分配内存的时候也可以不提供初始值,例如:

 
  • int *p = new int;

对于这种不提供显式初始化的情况,如果new的类型是类,则会调用该类的默认构造函数;如果是内部数据类型,则不会被初始化。

new 还可以申请一整块内存空间当做数组使用,其方法是在 new 的类型后面跟一个中括号,其中是数组的长度,语法格式如下:

new 类型[长度];

举个简单的例子:

  • int *arr = new int[5]; //定义长度为 5 的 arr 数组

自 C++11 标准开始,申请堆区数组空间的同时可以进行初始化,语法格式如下:

new 类型[长度]{值, 值, ...};

例如:

  • int *arr = new int[5]{1,2,3,4,5};

定义的 arr 数组中存放的元素分别是 1、2、3、4、5。

C++ delete

通过 new 分配的内存必须由开发者自己去释放,如果不手动释放,那么申请的堆内存就一直存在,直到程序执行结束才会被回收。

在 C++ 中使用 delete 来释放内存,语法格式为:

delete 指针名;


如果是当做数组使用的一整块对内存,delete 的语法格式为:

delete []指针名;

其中,中括号“[]”表示释放的是一个数组,这里不需要指定数组的长度。

例如:

  1. int* p = new int;
  2. int* arr = new int[5];
  3.  
  4. //释放先前申请的堆内存
  5. delete p;
  6. delete[]arr;

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
YouL0
粉丝 0 资源 386 + 关注 私信
最近热门资源
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  81
以openkylin为例编译安装内核  76
分享解决宏碁电脑关机时自动重启的方法  73
统信uosboot区分未挂载导致更新备份失败  63
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  63
统信uos安装mysql的实例参考  60
格之格打印机dp3300系列国产系统uos打印机驱动选择  57
在银河麒麟高级服务器操作系统V10SP3中,需要将默认shell类型修改为csh。  51
MySQL国产平替最佳选择---万里数据库(GreatDB)  45
最近下载排行榜
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
以openkylin为例编译安装内核 0
分享解决宏碁电脑关机时自动重启的方法 0
统信uosboot区分未挂载导致更新备份失败 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
统信uos安装mysql的实例参考 0
格之格打印机dp3300系列国产系统uos打印机驱动选择 0
在银河麒麟高级服务器操作系统V10SP3中,需要将默认shell类型修改为csh。 0
MySQL国产平替最佳选择---万里数据库(GreatDB) 0
作者收入月榜
1

prtyaa 收益400.83元

2

zlj141319 收益237.91元

3

哆啦漫漫喵 收益231.52元

4

IT-feng 收益219.92元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.17元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!