Это не необходимо. Но если Вы будете использовать valgrind
или подобный инструмент, то Вы скоро обнаружите что, оставляя всю Вашу память повисшими болотами Вы с ложными предупреждениями.
На стороне Linux вещей, "куча" выращена использующей sbrk
системный вызов. Это выращивает полное пространство памяти процессора большим блоком за один раз (таким образом, только один sbrk
необходим для обеспечения достаточного количества пространства для многих malloc
с. Когда процесс уходит, ядро исправляет всю память, выделенную sbrk
. Поэтому Вы в безопасности. Ядро также закроет любые дескрипторы файлов, открытые тем одним процессом.
существует несколько проблем, которые могут подойти. Если Ваш процесс когда-нибудь fork
с в несвоевременный момент, какие-либо открытые дескрипторы файлов будут дублированы. Я рассматривал эту декларацию саму как соединение TCP, загадочно зависающее живой после того, как исходный процесс умер, который является противен . Кроме того, существуют другие ресурсы, которые не просто ограничены по объему процессом, таким образом, они не будут исправлены, когда процесс умрет. Это включает сегменты общей памяти, временные файлы, именованные каналы и сокеты UNIX и вероятно убивание других механизмов IPC.
, Таким образом? Память прекрасна. Дескрипторы файлов обычно прекрасны. Некоторые более тайные функции IPC будут ужасно повреждены если не очищенный.
На iPhone Вы не должны, и насколько я знаю, Вы не можете. После получения applicationWillTerminate: у Вас есть несколько секунд для сохранения состояния, и затем ОС уничтожает процесс. Создайте одно из демонстрационных приложений и поместите точку останова в один из dealloc методов. Они никогда не поражаются.
Вот огромный спор об этом: текст ссылки
Примечание: Objective C dealloc не является тем же самым как Deconstructor C++. В Deconstructor можно закрыть файлы, дескрипторы, и т.д. В Objective C dealloc только для того, чтобы освободить память. Необходимо закрыть другие ресурсы ранее, так как dealloc никогда нельзя называть.
Действительно не необходимо, но если можно хотеть переработать someof источник и использовать его в другой программе, Вы могли бы получить утечки памяти. Около, никогда не полагайте, что ОС без любого отказа. Это могло "забыть" освобождать некоторые ресурсы.
Выпуск может помочь Вам найти ошибки. Как правило, проблемы с динамической памятью инициировали во время выпуска (например, Вы пытаетесь выпустить недопустимый объект). Всегда выпуск может помочь Вам определить ошибки, которые иначе было бы трудно найти.