在多次运行此函数(不确定具体多少次)后,它会在简单的内存分配上出现故障。为什么会突然出现这种情况?我确实注意到 GDB 中有一些奇怪的东西。在调用它的函数中,通常 wrd 有 6 位长的十六进制值(例如 wrd = 0x605140),但是在它崩溃的调用中,十六进制值只有两位长。(wrd=0x21)。我还检查了 wrd->length,它是 3。
它崩溃的线路是......
char *word_temp = malloc(wrd->length * sizeof(char));
编辑:
这是创建 wrd 的代码...
while(fgets(input, 100, src) != 0)
{
int i = 0;
while(input[i] != '\0')
{
i++;
}
struct word *wrd = malloc(sizeof(struct word));
wrd->letters = input;
wrd->length = i;
如果我遇到溢出,我该如何解决?