我正在尝试创建从getline()中读取的单词的动态字符**
while ((lineLength = getline(&line, &n, stdin)) != -1) {
if(lineLength > 0)
{
if(line[lineLength - 1] == '\n')
{
line[lineLength - 1] = '\0';
}
}
}
但是在使用malloc()创建元素并为其动态分配内存时遇到了问题。我目前正在尝试
char** words = (char**)malloc(x*sizeof(char));
但是出现错误。最好的方法是什么?
答案 0 :(得分:2)
sizeof(char)
与sizeof(char*)
不同。 sizeof(char)
通常为1,而指针的大小是实现定义的,但始终大于该值。您确实没有为指针分配足够的空间。因为您有一个指针指针,所以我认为您真正想要的代码是
char** words = (char**)malloc(x*sizeof(char*));