この関数を使用して 2 次元配列を割り当てた後:
char** make_matrix(int M, int N)
{
char** MAT = (char**)malloc(M * sizeof(char));
for (int i = 0; i < M; i++)
{
MAT[i] = (char*)malloc(N * sizeof(char));
}
return MAT;
}
しようとするfree(M[0])
と、アサーションの失敗が発生することがわかりました。2次元配列の解放に関連して見つけることができるすべては、int
代わりにchar
. char
ただし、すべてを上記に置き換えるint
と、アサーションの失敗はなくなります。これはなぜですか?どうすれば 2 次元配列全体を解放できますか?