小编Ped*_*ias的帖子

C在释放内存时,将double类型的变量强制转换为char类型的变量

在处理库时,在提供的示例源代码中我找到了以下代码:

x     = (double *) malloc (narcs  * sizeof (double));
dj    = (double *) malloc (narcs  * sizeof (double));
pi    = (double *) malloc (nnodes * sizeof (double));
slack = (double *) malloc (nnodes * sizeof (double));
Run Code Online (Sandbox Code Playgroud)

我在这里找不到什么特别的东西,但在释放内存时,源代码示例执行以下操作:

free_and_null ((char **) &x);
free_and_null ((char **) &dj);
free_and_null ((char **) &pi);
free_and_null ((char **) &slack);
Run Code Online (Sandbox Code Playgroud)

free_and_null代码是:

static void
free_and_null (char **ptr)
{
    if ( *ptr != NULL ) {
    free (*ptr);
    *ptr = NULL;
    };
};
Run Code Online (Sandbox Code Playgroud)

我的问题不是为什么,当释放先前分配的内存时,它会对char双指针进行转换.我的问题是为什么这样做是这样的,使用自定义函数释放内存以及为什么选择a char **作为此函数的参数.

我知道当然这个问题正在发生,因为我对C语言的知识仍然有限,但无论如何,任何人都可以解释为什么这样做,如果这是一个好习惯.

c malloc pointers char

3
推荐指数
1
解决办法
188
查看次数

标签 统计

c ×1

char ×1

malloc ×1

pointers ×1