#go #dynamic-memory-allocation
#Вперед #динамическое выделение памяти
Вопрос:
Я начал программировать в Go, и мне было интересно, когда new(Object)
используется, он выделяет память в соответствии с размером этого объекта, верно? Если это так, как мне освободить эту память после завершения использования объекта?
Я спрашиваю об этом, потому что в C , когда new
используется для объекта, вы можете delete
использовать объект, как только отпадет необходимость в сохранении объекта.
Я искал, есть ли у Go delete
или что-то похожее на C , но мне ничего не удалось найти.
Любая помощь очень ценится.
Комментарии:
1. В Go управление памятью не должно быть обязанностью разработчика, это сделает сборщик мусора.
Ответ №1:
Как вы видите здесь:
Go полностью очищен от мусора и обеспечивает фундаментальную поддержку параллельного выполнения и обмена данными.
Таким образом, вам не нужно заботиться о распределении памяти.
Ответ №2:
Go поддерживает сборку мусора. Это означает, что среда выполнения Go проверяет в фоновом режиме, не используется ли больше объект или любая другая переменная, и, если это так, освобождает память.
Также смотрите Часто задаваемые вопросы Go: Почему синтаксис так отличается от C? — Зачем выполнять сборку мусора? Не будет ли это слишком дорого?
Ответ №3:
В Go, в отличие от C и C , но как и в Java, управление памятью осуществляется автоматически сборщиком мусора.
Нет delete
вызова.
Не по теме:
в C , когда
new
используется для объекта, вы можетеdelete
использовать объект, как только отпадет необходимость в сохранении объекта.
Вы должны удалить, иначе у вас произойдет утечка памяти.