【发布时间】:2021-03-05 01:04:21
【问题描述】:
如何释放这个数组?这够了吗?只写free(arr) 就够了吗?我需要释放**arr 吗?如果是,我该怎么做?
提前致谢!
#include <stdio.h>
#include<stdlib.h>
#define N 5
int main(void)
{
int **arr = malloc(N*sizeof(int*));
for(int i=0;i<N;i++)
{
arr[i] = malloc(N*sizeof(int));
}
for(int i=0;i<N;i++)
free(arr[i]);
free(**arr);
return 0;
}
【问题讨论】:
-
这种情况下不需要释放数组,因为分配不会重复,操作系统会在执行结束后释放内存。有关详细信息,请参阅c - What REALLY happens when you don't free after malloc? - Stack Overflow
-
如果你必须释放内存(可能会饿死的长时间运行的进程),那么规则是“释放任何你 malloc 的内容”。
-
这能回答你的问题吗? How to free 2d array in C?
标签: arrays c malloc free double-pointer