在堆上分配内存,要使用 new 关键字,后面跟一个数据类型。如果需要对分配出的内存进行初始化,则在类型后面加上一个括号,并带有初始值。new 的语法格式如下:
new 类型(初值);
为了后续方便使用申请的堆内存,通常会使用一个指针指向 new 的结果,例如:
上面的语句在堆上分配一块整型变量的内存,并使指针 p 指向这块内存。括号中的 5 为这块内存提供一个初始值,该内存分配成功之后,会用 5 去初始化,因此 *p 的值为 5。
当然,在堆上分配内存的时候也可以不提供初始值,例如:
对于这种不提供显式初始化的情况,如果new的类型是类,则会调用该类的默认构造函数;如果是内部数据类型,则不会被初始化。
new 还可以申请一整块内存空间当做数组使用,其方法是在 new 的类型后面跟一个中括号,其中是数组的长度,语法格式如下:
new 类型[长度];
举个简单的例子:
自 C++11 标准开始,申请堆区数组空间的同时可以进行初始化,语法格式如下:
new 类型[长度]{值, 值, ...};
例如:
定义的 arr 数组中存放的元素分别是 1、2、3、4、5。
通过 new 分配的内存必须由开发者自己去释放,如果不手动释放,那么申请的堆内存就一直存在,直到程序执行结束才会被回收。
在 C++ 中使用 delete 来释放内存,语法格式为:
delete 指针名;
如果是当做数组使用的一整块对内存,delete 的语法格式为:
delete []指针名;
其中,中括号“[]”表示释放的是一个数组,这里不需要指定数组的长度。
例如:
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!