小编B.I*_*Ing的帖子

在c中释放2d矩阵时正确使用free()

我刚刚开始用c学习编码,我和free()命令结合使用了一些关于2d矩阵的问题.

我知道你首先需要创建一个带指针的数组,指向矩阵的不同列:

double **array = (double **)malloc(5*sizeof(double *));
for(int n = 0; n<5; n++){

array[n] = (double *) malloc(6*sizeof(double));
Run Code Online (Sandbox Code Playgroud)

我知道然后解除分配这个矩阵的正确方法是首先释放各个行,然后释放数组指针本身.有点像:

for (i = 0; i < nX; i++){  
   free(array[i]); }     

free(array);
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么这有必要?我知道这不正确,但为什么你不能只使用:free(array)?根据我的理解,这会释放指针数组.当其他东西需要访问它时,列的使用内存是否会被覆盖?free(array)会以任何方式导致内存损坏吗?

任何帮助深表感谢!

c arrays malloc free memory-management

4
推荐指数
2
解决办法
247
查看次数

标签 统计

arrays ×1

c ×1

free ×1

malloc ×1

memory-management ×1