C++用new定义的二维数组如何用delete完全释放内存
时间: 2024-12-16 13:31:26 浏览: 7
c++创建二维动态数组与内存释放问题
5星 · 资源好评率100%
在C++中,当你使用`new`关键字动态创建一个二维数组时,每个元素都是独立的对象,因此释放内存需要分别对每一行进行。下面是一个例子:
```cpp
int **matrix; // 定义一个指向指针的指针
int rows = 3;
int cols = 4;
// 分配内存
matrix = new int*[rows]; // 创建一个大小为rows的指针数组
for (int i = 0; i < rows; i++) {
matrix[i] = new int[cols]; // 每一行分配列数为cols的内存
}
// 使用完后释放内存
for (int i = 0; i < rows; i++) {
delete[] matrix[i]; // 首先删除每行的内存
}
delete[] matrix; // 最后删除指针数组本身
// 再次强调,如果矩阵未初始化就直接删除,可能会导致不确定的行为,因为可能会有未初始化的元素
```
在这个例子中,首先分配了一个指向整型的一维数组的指针数组,然后在每个元素处动态分配了一维数组。释放内存时,我们需要从最后一级开始,逐行释放,最后释放顶级指针。
阅读全文