C++中new的三种用法详细解析
new
是 C++ 中一个非常重要的关键字,主要用于动态分配内存。通常情况下,使用 new
就意味着需要手动管理这块内存的释放。new
的语法形式有三种,分别是:
- new operator
- 以
new
运算符来申请动态内存,并返回该内存的地址,也就是指针类型。 - 语法是
new 数据类型;
。创建出来的对象默认初始化,如果需要初始化,可以在类型名后加括号,并在括号内传递初始化参数。
- 以
- new type(n)
- 创建指定类型的数组,并返回该数组首元素的地址。
- 语法是
new 数据类型 [数组元素个数];
。创建出来的数组按照默认方式进行初始化,如果需要初始化,可以在类型名后加括号,并在括号内传递初始化参数。
- placement new
- 在指定的内存地址上构造一个对象。
- 语法是
new (地址) 类型名(参数列表);
。该内存应该在使用delete
操作符时清理,这样才能避免内存泄漏。
示例一
下面是以 new operator
动态分配内存的示例代码:
#include <iostream>
using namespace std;
int main() {
int *ptr = NULL;
ptr = new int; // 动态分配内存空间,类型是int指针
*ptr = 11; // 初始化内存空间
cout << "ptr指向的内存地址存储的值:" << *ptr << endl; // 打印出 "ptr指向的内存地址存储的值:11"
delete ptr; //释放指针变量ptr指向的动态内存空间
ptr = NULL; // 将指针变量ptr指向空地址
return 0;
}
该代码中,首先通过 new
运算符动态分配了一段 int 类型的内存,然后为该内存设置了值,最后通过 delete
操作符释放了该内存空间。
示例二
下面是创建动态数组的示例代码:
#include <iostream>
using namespace std;
int main() {
int* arr; // 定义一个指针
int n = 5; // 数组长度
arr = new int[n]; // 动态分配内存空间,类型是int数组
for (int i = 0; i < n; ++i) {
arr[i] = i + 1; // 初始化内存空间
}
cout << "数组元素:";
for (int i = 0; i < n; ++i) {
cout << arr[i] << " "; // 打印出 "数组元素:1 2 3 4 5"
}
delete [] arr; //释放指针变量arr指向的动态内存空间
arr = NULL; // 将指针变量arr指向空地址
return 0;
}
该代码中,首先通过 new
运算符动态分配了一段 int 类型的数组内存,然后给数组进行了初始化,最后通过 delete
操作符释放了该内存空间。
以上是对 C++ 中 new
操作符的三种用法的详细解析。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++中new的三种用法详细解析 - Python技术站