Что значит перерабатывать динамическую память?

Я узнал о "свободном", который используется после malloc, чтобы не создавать мусорную память в C. Что перерабатывается? Я искал это, но не мог найти никакого кода. Все, что я получил, это объяснение о свободе.. Они одинаковы?

Чтобы добавить, в моей книге о структуре данных (общие линейные списки) говорится, что "Recycle - это команда псевдокода для возврата пространства узла в динамическую память.

Большое спасибо.

это диаграмма

Я откажусь от картинки, если возникнут какие-либо проблемы с лицензией.

2 ответа

Переработка означает освобождение неиспользуемой памяти, чтобы ее можно было использовать позже.

Если вы продолжаете mallocбез freeПосле некоторого времени работы ваша программа может занимать ГБ ОЗУ, в основном неиспользованные. Прямые последствия могут быть в том, что операционная система будет отказывать вашей программе в дальнейшем malloc запрос или даже обременять всю систему.

Переработка не является псевдокодом. Это настоящий код, сообщающий ОС: "Этот блок памяти больше не используется. Вы можете выделить его для любой программы". После этого система может снова управлять этим конкретным блоком памяти, вместо того, чтобы тратить его впустую. Настоящий код free()в то время как переработка это просто термин, используемый в информатике.

Это всегда хорошая практика free неиспользованная память с точки зрения эффективности.

Я посмотрел на фразу, которую вы упомянули в книгах Google. Они имели в виду, что они предполагают, что они уже определили функцию или псевдокод void recycle(node ​​*ploc), где ploc - это узел, который нам больше не нужен в связанном списке. И да, это похоже на освобождение или удаление на ploc. Мы можем либо сделать это напрямую в текущей функции, либо сделать это в отдельной функции, такой как recycle.

Другие вопросы по тегам