gpt4 book ai didi

C 错误 - 找不到当前函数的边界

转载 作者:行者123 更新时间:2023-11-30 20:23:56 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

typedef struct dictionary_entry
{
char *eng;
char *gr;
} term;

len = 0;
term *terms, *trm;
terms = (term*)malloc(0);
char temp1[50], temp2[50];
trm = (term*)malloc(0);
trm->eng = (char*)malloc(0);
trm->gr = (char*)malloc(0);
FILE *in = fopen("dictionary.txt", "r");
while(feof(in) == 0)
{
fscanf(in, "%s %s\n", temp1, temp2);
trm = (term*)realloc(trm, sizeof(term));
trm->gr = (char*)realloc(trm, sizeof(char) * strlen(temp1));
trm->eng = (char*)realloc(trm, sizeof(char) * strlen(temp2));
strcpy(trm->gr, temp1);
strcpy(trm->eng, temp2);
add(&terms, trm, &len);
}
free(trm->eng);
free(trm->gr);
free(trm);
fclose(in);

我试图从我的文件中读取单词集(例如单词翻译)来创建字典,但是一旦我运行该程序,它就会崩溃。调试器向我指出 realloc 函数,并出现一条错误消息。消息是

[调试]找不到当前函数的边界

这个问题似乎与我正在使用的 realloc 函数有关。有人遇到过这个问题吗?如果是的话我该如何解决?

我正在使用 Code::Blocks。

最佳答案

您没有使用此重新分配正确的结构字段

trm->gr = (char*)realloc(trm, sizeof(char) * strlen(temp1));
trm->eng = (char*)realloc(trm, sizeof(char) * strlen(temp2));

我建议应该是

trm->gr = (char*)realloc(trm->gr, sizeof(char) * strlen(temp1));
trm->eng = (char*)realloc(trm->eng, sizeof(char) * strlen(temp2));

我注意到您正在使用 strlen 来调整大小,因此您可能还需要 +1 作为字符串终止符,这(也简化)将是

trm->gr = realloc(trm->gr, strlen(temp1) + 1);
trm->eng = realloc(trm->eng, strlen(temp2) + 1);

但是您也应该始终检查函数的返回值。

关于C 错误 - 找不到当前函数的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com