c - 无法 malloc char**

标签 c

有人可以解释一下我在这里做错了什么吗? 我正在尝试像这样分配“多维”动态数组。

谢谢

enum { MAX_WORDS = 100, MAX_LENGHT = 20 };

char **words;

// it fails here "void * cannot be assigned... type of char**"
words = malloc(MAX_WORDS * sizeof(char*));

for (int i = 0; i < MAX_WORDS; i++) {
    words[i] = malloc(MAX_LENGHT * sizeof(char));
}

最佳答案

words = malloc(MAX_WORDS * sizeof(char*));

应该阅读

words = (char**)malloc(MAX_WORDS * sizeof(char*));

你的编译器很生气,因为你试图分配一个指向 char 指针的 void,因此你需要将其类型转换为 char** 才能正常工作。

编辑:显然这是因为我使用的是 C++ 编译器。在 C 中,您不应该转换 malloc() 的结果。如果您使用 C++,您应该切换到 new 并删除(如果可能)。

关于c - 无法 malloc char**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35411490/

相关文章:

c - getopt 值保持为空

比较数组元素并尝试将不同的元素添加到其他数组不起作用?

c - 左值错误和数组指针

c - 从 SIGCHLD 返回的信号似乎是错误的

c - 当尝试打印指针时,Turbo C 和 gcc 中 printf() 的不同行为

c - 这里的 sendto() 参数有什么问题?

c - 二维字符数组

c++ - C/C++ 中#define 的不同语法,包括许多语句

c - 这是经典书籍Linux Device Drivers的错误吗?

c - getchar() 不传递 EOF 并且 Ctrl+Z 不终止 Cygwin 上的程序