0
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);

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

4

3 回答 3

4

您需要在.返回的相同地址上free()多次拨打电话。因此,您只需按照分配的方式进行操作:malloc()malloc()

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

free(tree0);
于 2012-08-25T06:16:49.617 回答
1

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

请注意,malloc()不需要强制转换返回值。

于 2012-08-25T06:17:05.560 回答
0

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

于 2012-08-25T06:16:45.597 回答