C语言三维动态申请的数组怎么释放
时间: 2023-11-14 11:05:05 浏览: 89
三维动态申请的数组需要按照以下步骤进行释放:
1. 首先,对于每一维,需要使用循环释放内存空间。
2. 最内层循环释放内存空间时,需要从高到低释放,以保证释放的顺序和分配的顺序相反。
3. 最后,释放指向二维数组的指针,接着释放指向一维数组的指针,最后释放指向整个三维数组的指针。
示例代码如下:
```c
// 三维数组动态申请和释放的示例代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, k;
// 动态申请三维数组
int ***arr = (int ***)malloc(sizeof(int **) * 3);
for (i = 0; i < 3; i++) {
arr[i] = (int **)malloc(sizeof(int *) * 4);
for (j = 0; j < 4; j++) {
arr[i][j] = (int *)malloc(sizeof(int) * 5);
}
}
// 对三维数组赋值
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
for (k = 0; k < 5; k++) {
arr[i][j][k] = i * 100 + j * 10 + k;
}
}
}
// 输出三维数组的值
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
for (k = 0; k < 5; k++) {
printf("%d ", arr[i][j][k]);
}
printf("\n");
}
printf("\n");
}
// 释放三维数组
for (i = 2; i >= 0; i--) {
for (j = 3; j >= 0; j--) {
free(arr[i][j]);
}
free(arr[i]);
}
free(arr);
return 0;
}
```
在上述示例代码中,我们首先使用三层循环动态申请了一个 3 × 4 × 5 的三维数组,对其进行了赋值,并输出了其值;然后按照释放的顺序,使用三层循环将其释放。
阅读全文