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

时间:2016-01-19 15:55:33

标签: c function file realloc

#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函数并显示一条错误消息。消息是

[debug]找不到当前函数的界限

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

我正在使用Code :: Blocks。

1 个答案:

答案 0 :(得分:1)

您没有使用此

重新分配正确的结构字段
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);

但是你也应该总是检查函数的返回值。

相关问题