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

在c中使用后如何释放双指针?,c,malloc,free,C,Malloc,Free,我在某个地方发现了堆损坏错误,并认为这可能是问题所在…每个malloc都需要一个空闲,因此您需要一个类似的for循环来释放所有内部malloc。每个malloc都需要一个空闲,因此,您需要一个类似的for循环来释放所有内部malloc。您需要调用free()的次数与调用malloc()的次数相同,并且调用的地址与malloc()返回的地址相同。因此,您只需按照分配的方式进行操作: free(tree0); (i=0;i

我在某个地方发现了堆损坏错误,并认为这可能是问题所在…

每个
malloc
都需要一个
空闲
,因此您需要一个类似的
for
循环来释放所有内部malloc。

每个
malloc
都需要一个
空闲
,因此,您需要一个类似的
for
循环来释放所有内部malloc。

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

free(tree0);
(i=0;i<255;i++)的

免费(tree0[i])
免费(tree0);

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

free(tree0);
(i=0;i<255;i++)的

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

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

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


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

堆损坏可能是由于抛出
malloc
的返回,但不是因为您没有释放一些内存。堆损坏可能是由于抛出
malloc
的返回,而不是因为您没有释放一些内存。我是否应该始终调用free?如果一个函数中有一个方法和一个本地指针,那么在调用该方法后指针不会被自动释放吗?我应该总是调用free吗?如果一个函数中有一个方法和一个本地指针,那么在调用该方法后指针不会自动释放吗?
for( i = 0; i < 255; i++) 
    free(tree0[i])

free(tree0);