Моя программа читает файл (test.txt, и он содержит только 2 строки и пробел, например: «Hello World»), и когда я использую calloc, это вызывает утечку памяти при использовании valgrind.Проблема в том, что я получил больше байтов, потерянных во втором выделении памяти (b = calloc (11, sizeof (* b)).
Я попытался использовать free (), это не сработало
char str[1024];
char *a = NULL;
char *a = NULL;
int i = 0;
while(!feof(myfile)) {
//I used some codes here to skip "\r\n" which is working fine.
fscanf(myfile, "%10s", str);
i = strlen(str);
if(key_find(k,str) == NULL){
a = calloc(i,sizeof(*a));
strcpy(a,str);
key_insert(k,a);
}
fscanf(myfile, " ");
fscanf(myfile, "%10s", str);
if(key_find(k,str) == NULL){
b = calloc(i,sizeof(*a));
strcpy(b,str);
key_insert(k,a);
}
}
free(a); free(b);
Это не дает мне никакой утечки памяти, когда у меня есть только 2 разные строки в моем текстовом файле. Но если у меня есть больше чем 4 строки, то это дает мне утечку памяти.