动态分配数组通过指针结合new和delete实现,一维数组如int arr = new int[10],需用delete[]释放;二维数组可用指针的指针,先分配行指针int matrix = new int[3],再循环为每行分配列空间。

在C++中,动态分配数组是通过指针来实现的,因为数组名本身不能重新指向新的内存块。使用指针结合
new和
delete操作符,可以灵活地在堆上创建和释放数组。
动态分配一维数组
使用指针动态分配一维数组时,需要声明一个指针,并用
new分配指定大小的内存空间。
例如,创建一个包含10个整数的数组:
int* arr = new int[10];此时,
arr指向堆上分配的连续内存空间,可以像普通数组一样访问元素:
立即学习“C++免费学习笔记(深入)”;
arr[0] = 5; arr[5] = 10;使用完毕后,必须用
delete[]释放内存,避免内存泄漏: delete[] arr; arr = nullptr; // 避免悬空指针
动态分配二维数组
二维数组的动态分配有多种方式,常见的是“指针的指针”方法。
先分配行指针:
int** matrix = new int*[3]; // 3行再为每一行分配列空间:
for (int i = 0; i访问元素:
matrix[1][2] = 7;释放时要先释放每一行,再释放行指针:
for (int i = 0; i使用std::vector替代手动管理
虽然指针和
new/
delete能实现动态数组,但容易出错。推荐使用
std::vector,它自动管理内存,更安全且功能丰富。
例如:
#include无需手动释放,超出作用域自动清理。
基本上就这些。手动动态分配需要严格配对
new[]和
delete[],而
std::vector更现代、更安全,是首选方式。










