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

标签 c string pointers

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

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

最佳答案

也许您想做这样的事情:

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*))

如果您解释了您的最终目标,这将有助于我们帮助您,也许有更好的方法来完成您正在做的事情。

关于调用 malloc 并将返回值存储在双指针中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55602342/

相关文章:

java - 如何让实例在 Java 中直接返回字段的字符串,就像在 Python 中使用 __radd__ 所做的那样?

Java ArrayList 字符串长度打印

string - awk中不区分大小写的字符串匹配

c - 修复简单 C 程序中的段错误

c++ - 通过指针将 char 数组传输到另一个临时数组指针

c++ - 如何从C调用C++函数?

php - 组织编程竞赛 - 如何编译和执行

c - 如何释放 C 中的 n 字节内存?

c++ - 从类或独立函数指向函数的函数指针

c++ - 是否有任何库可以像 Open CV 访问摄像头一样访问 PC(Windows)麦克风?