c函数free()用于矩阵

时间:2016-05-29 10:48:45

标签: c memory-management

我正在为学校做一个纯粹的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循环吗?

1 个答案:

答案 0 :(得分:3)

  

免费级联指向所有指针

没有

  

我应该为每个定义的指针再次执行for循环吗?

一般规则是:

每次拨打free()或其朋友(malloc()calloc()realloc())时,只需拨打strdup()一次电话。

在已经重新/已分配的内存块上对realloc()的调用不计算在内。