1
我正在为学校的纯C项目工作。c函数免费()为矩阵
char** init_matrix ()
{
printf ("%s\n", __PRETTY_FUNCTION__);
char** temp_matrix;
temp_matrix = (char **) malloc (CHAR_BIT * sizeof (char*));
for (int i = 0; i < CHAR_BIT; i ++)
{
*(temp_matrix + i) = (char *) calloc (CHAR_BIT, sizeof (char));
}
return temp_matrix;
}
在主带我去一个电话,
char ** mat = init_matrix ();
是免费级联到所有的指针指向
free(mat);
或者我应该for循环每个指针做一次界定?
你是什么意思的“纯”C(相比“不纯”C,也许)?我看到使用了不符合C语言标准的'malloc()'和'calloc()'。你不应该输出结果。 'free()'不会级联。如果你想编写自己的函数来释放你的矩阵,你应该使用'for'循环来释放每一个指定的指针。 – user3078414
'free'函数不会'级联'代码必须将从任何内存分配函数调用返回的每个指针传递给'free()'。 – user3629249