Arrays 分段故障(堆芯倾倒)需要建议

Arrays 分段故障(堆芯倾倒)需要建议,arrays,c,string,compiler-errors,Arrays,C,String,Compiler Errors,我需要帮助为变量分配内存。我正在寻找导致崩溃的具体线路以及如何修复它们。我尝试过在许多地方以不同的方式重新分配和malloc。我大致知道哪些行有问题(我的realoc行?) 我在PowerShell上的Linux上运行它,并得到以下错误 Segmentation fault (core dumped) 这里很清楚,您没有初始化行字符数组。在第一次迭代期间,行[0]未知。读取未初始化的变量是未定义的行为,可能导致意外的程序行为。使用调试器。至少,这将告诉您触发seg故障的确切代码行以及导致该故

我需要帮助为变量分配内存。我正在寻找导致崩溃的具体线路以及如何修复它们。我尝试过在许多地方以不同的方式重新分配和malloc。我大致知道哪些行有问题(我的realoc行?)

我在PowerShell上的Linux上运行它,并得到以下错误

 Segmentation fault (core dumped)

这里很清楚,您没有初始化
字符数组。在第一次迭代期间,
行[0]
未知。读取未初始化的变量是未定义的行为,可能导致意外的程序行为。

使用调试器。至少,这将告诉您触发seg故障的确切代码行以及导致该故障的堆栈跟踪。你应该自己收集这些信息,也可以在这里发布。
strcat(myString,line)
会导致未定义的行为(seg故障是一种可能性)。这两个参数都必须是字符串。但是
myString
内容未初始化。使用
myString[0]='\0'初始化您有许多无用的分配。分割错误经常发生,因为您正在从数组中伸出。了解如何通过添加带有索引和长度的
printf
进行调试。
line=realloc(line,strlen(line)+1)嗯,这对初学者来说没用。为什么您认为每个循环都需要一个新的缓冲区?如果你不能使用调试器,你会很痛苦。你的代码到处都有bug,这不是一篇文章可以修复的。例如:
int search\u size;search=(char*)malloc(search_size*sizeof(char))当调用
malloc
时,您认为
search\u size
的值是多少?我的建议是:应用最佳实践编码。在返回测试之前,不要编写所有代码。编写一个小函数,甚至函数的一小部分。然后编写测试来验证它是否正常工作。然后再添加一点代码。等等添加代码来测试它。每次添加少量代码时,请继续运行所有测试。谢谢,我已经修复了包含这些代码的代码,但是我是否正确使用了malloc?有更好的使用方法吗?我是个初学者,我希望向你们大家学习。我已经更新了代码,我很感激任何建议,不需要抛出malloc的结果。有关malloc分配的信息,请参见此链接:**%20type.@hitomilayla请接受答案,如果有帮助,当我尝试“感谢反馈!记录声誉低于15的人的投票,但不要更改公开显示的帖子分数”时,它会给出此消息。@hitomi有一个勾号按钮(投票按钮下方),你需要按下它来接受答案。你将因接受答案而获得+2声誉。是的,需要15%的选票。
 Segmentation fault (core dumped)
 line = (char * ) malloc(1024 * sizeof(char));
 myString = malloc(1024);
 while (line[0] != '\n')