调用malloc并将返回值存储在双指针中?

时间:2019-04-09 22:46:02

标签: c string pointers

char **init(int n) {
    char **result;
    result = malloc(n * sizeof(char));
    return result;
}

我需要帮助来了解第三行是否是错误。调用malloc()将在堆上的内存中创建N个连续的块,每个块足够大以存储单个字符,并且它将返回一个空的ptr(数组的基地址)。但是,结果是一个指向指针的指针,因此它需要存储另一个指针的地址,在这里不是这种情况吗?

1 个答案:

答案 0 :(得分:0)

也许您正在寻找做这样的事情:

char *init(unsigned int n) {
    char *result;

    /* allocate the memory */
    result = malloc(n * sizeof(char));

    return result;
}

这将分配内存以存储n个连续字符。

您可以将代码简化为:

char *init(int n) {
    return malloc(n * sizeof(char));
}

或者您可以直接执行以下操作来代替调用此函数:

malloc(n * sizeof(char));

或者您可以创建一个宏

#define INIT_CHAR_ARR(n) malloc((n) * sizeof(char))

如果要n个连续的字符指针:

malloc(n * sizeof(char*))

如果您解释了最终目标,它将帮助我们为您提供帮助,也许有更好的方法来完成您的工作。