C++表达式new与delete知识详解
在 C++ 中,new 和 delete 是用于动态分配内存的表达式。new 用于分配内存,delete 用于释放内存。
new 表达式
基本语法
pointer = new type;
其中,pointer 是指向新的分配的内存空间的指针,type 是数据类型。new 表达式会分配一个存储类型为 type 的对象的内存空间,然后返回该内存空间的地址。
示例
下面的示例演示了如何使用 new 表达式来动态分配一个 int 类型的数组,并访问其元素。
int* arr = new int[10];
for(int i = 0; i < 10; i++) {
arr[i] = i;
}
for(int i = 0; i < 10; i++) {
std::cout << arr[i] << " ";
}
delete[] arr;
上面的代码中,我们使用了 new 表达式来分配一个 int 类型的数组,大小为 10。然后,我们使用 for 循环来初始化数组的每一个元素,之后再使用 for 循环来输出数组中的所有元素。最后,我们使用 delete[] 来释放分配的内存空间。
带参数的 new 表达式
new 表达式还可以带有参数。这些参数可以用于初始化对象。基本语法如下:
pointer = new type (parameters);
其中,pointer 是指向新的分配的内存空间的指针,type 是数据类型,parameters 是可选的参数列表。new 表达式会分配一个存储类型为 type 的对象的内存空间,并使用 parameters 列表来初始化该对象。然后返回该内存空间的地址。
示例
下面的示例演示了如何使用带参数的 new 表达式来动态分配一个 std::string 类型的数组,并访问其元素。
std::string* arr = new std::string[10]{"hello", "world", "c++"};
for(int i = 0; i < 3; i++) {
std::cout << arr[i] << " ";
}
delete[] arr;
上面的代码中,我们使用了带参数的 new 表达式来分配一个 std::string 类型的数组,大小为 10,并初始化其中的前三个元素。然后,我们使用 for 循环来输出数组中的前三个元素。最后,我们使用 delete[] 来释放分配的内存空间。
delete 表达式
delete 表达式用于释放使用 new 表达式分配的动态内存空间。其基本语法如下:
delete pointer;
其中,pointer 是 new 表达式返回的指针,它指向要释放的内存空间。
示例
下面的示例演示了如何使用 new 和 delete 表达式来动态分配和释放 int 类型的数组。
int* arr = new int[10];
for(int i = 0; i < 10; i++) {
arr[i] = i;
}
for(int i = 0; i < 10; i++) {
std::cout << arr[i] << " ";
}
delete[] arr;
上面的代码中,我们使用了 new 表达式来分配一个 int 类型的数组,大小为 10。然后,我们使用 for 循环来初始化数组的每一个元素,之后再使用 for 循环来输出数组中的所有元素。最后,我们使用 delete[] 来释放分配的内存空间。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++表达式new与delete知识详解 - Python技术站