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 に答える