На самом деле я работаю над проектом по манипулированию связанными списками, и все работает отлично, но когда я запускаю его с помощью valgrind, я вижу, что есть много проблем с памятью. Я помещаю здесь часть кода, где я думаю, что проблема с выделенной памятью такова, что, возможно, вы поможете мне выяснить это.
Итак, мне нужно прочитать из файла этого формата:
19971230 20220512 ALklklklk
19970905 20001203 BDHE UNE
20151212 20301123 CLEUSHI
20171221 20301025 DE klkllLU TOPI
20160315 20190227 Ehaaaa
и поместите их в связанный список, представленный этой структурой:
typedef struct cell{
int dateDeb;
int dateFin;
char text[TAILLE_MAX];
struct cell * suivant;
}message;
Вначале я кодировал эту функцию для инициализации блока списка:
message * creationCellule(){
message * cellule;
cellule = (message *)malloc(sizeof(message));
if(cellule != NULL)
{
cellule -> dateDeb = 0;
cellule -> dateFin = 0;
cellule -> suivant = NULL;
memset(cellule->text, '\0', TAILLE_MAX);
}
return cellule;
}
И функция для чтения из файла:
void lectureFichier(const char * nomFichier, message ** tete)
{
FILE * fp = fopen(nomFichier, "r");
message * test;
test = creationCellule();
if(fp != NULL)
{
while(fscanf(fp,"%d %d ", &(test->dateDeb), &(test->dateFin)) == 2)
{
fgets(test -> text, 100, fp);
insertion(tete, test);
test = creationCellule(test);
}
}
fclose(fp);
}
Вот эта функция вставки:
void insertion(message ** tete, message * cellule){
message ** prec;
if(cellule != NULL){
prec = recherche(tete, cellule -> dateDeb);
cellule -> suivant = *prec;
*prec = cellule;
}
}
Valgrind сообщает мне, что произошла утечка памяти и динамически выделенная память не освобождается. И это правильно, потому что я ничего не освобождаю в этих функциях, но я не знаю, где использовать free, потому что мне нужно повторно использовать это внутри цикла. Вот результат Valgrind:
введите описание изображения здесь
Не могли бы вы показать мне решение, как решить эту проблему, потому что я застрял в этом. Даже если мне нужна функция creationCellule, все в порядке. Это не обязательно писать это. Огромное спасибо заранее !