Я попытался решить дополнительный кредит exercise 16, хотя он скомпилирован должным образом, я получаю утечки памяти.
Теперь я понятия, что, если не используем таНос вообще нет никакого способа, программа будет утечка памяти, но здесь это делает, потому что когда я запускал команду:
Что такое утечки памяти в C?
valgrind --leak-check=full -v ./ex16-1
я получил :definitely lost: 21 bytes in 2 blocks
- Так что теперь я хотел бы спросить, можно ли иметь утечек даже если не выделять какую-либо память (учитывая, что с моим источником ничего не случилось)?
- Кроме того, если это возможно, то как освободить этот блок памяти?
Где находится точка памяти?
пс: Полный выход Valgrind доступен здесь: Pastebin-1
И источник здесь: Pastebin-2
- Так что теперь я хотел бы спросить, можно ли иметь утечек даже если не выделять какую-либо память (учитывая, что с моим источником ничего не случилось)?
. Ваши ссылки на пастообразные объекты обе идут в одно и то же место, и это было бы гораздо более читаемым, если бы вы вставляли исходный код в строку кода в любом случае. – ComputerDruid
Строка 71ff сообщает вам, что именно не так: 'Person_create' вызывает' strdup', который называет 'malloc' внутренне, и вы не' free' указатель 'char *'. – Phillip
Я серьезно не знал, что strdup использует malloc внутренне, я был действительно смущен, почему valgrind даже печатал malloc! Большое спасибо! – ArchKudo