我正在为学校做一个纯粹的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循环吗?
答案 0 :(得分:3)
免费级联指向所有指针
没有
我应该为每个定义的指针再次执行for循环吗?
是
一般规则是:
每次拨打free()
或其朋友(malloc()
,calloc()
,realloc()
)时,只需拨打strdup()
一次电话。
在已经重新/已分配的内存块上对realloc()
的调用不计算在内。