Зомби-объект: ссылка на освобождённую память

В программировании термин «зомби-объект» обычно относится к объекту, который уже был уничтожен или освобождён из памяти, но на который всё ещё существует ссылка.

Короткий ответ

Что ответить на собеседовании

В программировании термин «зомби-объект» обычно относится к объекту, который уже был уничтожен или освобождён из памяти, но на который всё ещё существует ссылка. Такой объект больше невалиден, и попытка обратиться к нему приводит к ошибкам, например, к краху программы.

Подробный разбор

Ответ с пояснениями

В программировании термин «зомби-объект» обычно относится к объекту, который уже был уничтожен или освобождён из памяти, но на который всё ещё существует ссылка. Такой объект больше невалиден, и попытка обратиться к нему приводит к ошибкам, например, к краху программы.

В iOS (Objective-C или Swift) это может случиться, если объект был деаллоцирован, но указатель на него остался. При попытке доступа к этому указателю программа может упасть с ошибкой EXC_BAD_ACCESS.

Пример: если у вас есть слабая ссылка (weak) на объект, и объект удалён, то слабая ссылка автоматически обнуляется. Но если используется незащищённая (unsafe) ссылка, то она может указывать на уже освобождённую память — это и есть зомби-объект.

Для отладки таких проблем в Xcode есть инструмент Zombies, который помогает выявлять обращения к уже освобождённым объектам.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее