У меня есть программа, которая читает из файла и сохраняет элементы в очереди, а затем выводит их обратно. Я получаю это от Valgrind:Я где-то не освобождаю память?
HEAP SUMMARY:
in use at exit: 302 bytes in 14 blocks
total heap usage: 30 allocs, 16 frees, 1,230 bytes allocated
302 bytes in 14 blocks are definitely lost in loss record 1 of 1
at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
by 0x372167FB41: strdup (strdup.c:43)
by 0x400A6A: addtoqueue(main.c:30)
by 0x400B5A: addfiletoqueue(main.c:45)
by 0x400C27: main (main.c:62)
LEAK SUMMARY:
definitely lost: 302 bytes in 14 blocks
indirectly lost: 0 bytes in 0 blocks
possibly lost: 0 bytes in 0 blocks
still reachable: 0 bytes in 0 blocks
suppressed: 0 bytes in 0 blocks
линии 62 из main.c
addfiletoqueue (queue, argv[argi]);
Line 45 из main.c
addtoqueue (queue, file, filename);
Линия 30 из main.c
readline = strdup (buffer);
assert (readline != NULL);
queue_add (queue, readline);
Нужно ли мне свободно читать?
Моя переменная readline существует только в пределах цикла for и при попытке ее освобождения я получаю больше ошибок относительно недопустимых размеров чтения и свободных адресов , – KeyHeart
Объем переменной не имеет значения, память, на которую она указывает, должна быть указана функцией 'free()' для того, чтобы быть выделенной. То, что переменная указателя сама выходит из области действия, когда концы цикла не имеют значения. – unwind
Я свободен (очередь), который содержит узлы и линии, но бесплатно, бесплатно все это? Как освободить память readline позже, если я не могу использовать ее в качестве аргумента? – KeyHeart