如何在 c 中使用后释放双指针

  • 本文关键字:释放 指针 c malloc free
  • 更新时间 :
  • 英文 :

float **tree0;
tree0 = (float**)malloc(255 * sizeof(float*));
for( i = 0; i < 255; i++) 
    tree0[i] = (float*)malloc(M * sizeof(float));
for(i = 0; i < 255; i++)
    for( k = 0; k < M; k++)
        tree0[i][k] = 2;

我应该像这样释放它吗

free(tree0);

我在某处堆损坏错误,并认为这可能是问题所在......

您需要调用free()的次数与malloc()调用的次数相同,并且使用的地址与malloc()返回的地址相同。因此,您只需按照分配的方式进行操作:

for( i = 0; i < 255; i++) 
    free(tree0[i])
free(tree0);

对于每个malloc()都必须有一个free()。您需要以与malloc()循环相同的方式进行迭代,但调用free(tree0[i])然后free(tree0)

请注意,从 malloc() 强制转换返回值是不必要的。

每个malloc都需要一个free,所以你需要一个类似的for循环来释放所有内部的mallocs。

相关内容

  • 没有找到相关文章