Стек очистки

редактировать

Стек очистки - концепция, широко используемая в Symbian OS. Наиболее подходит для использования в местах, где динамическая память используется (выделяется) в программировании. Проблема с динамической памятью остается на усмотрение базовой ОС, должен ли запрос на выделение памяти быть успешным или нет. Приложения (запрашивающий память) должны быть готовы обработать отказ. В больших программах динамическая память используется практически везде. Если приложение часто добавляет код для обработки этого сбоя, оно значительно увеличивает размер кода. Symbian используется в основном на телефонах, где это увеличение размера кода еще больше усугубит сбои при распределении памяти. Symbian предлагает оригинальное решение этой проблемы. Когда приложение отмечает, что выделение памяти может завершиться ошибкой, оно помещает ранее выделенный адрес памяти в место, о котором знает Symbian. Это место называется Cleanup Stack. В случае сбоя Symbian знает, что любой ресурс, помещенный в стек очистки, необходимо освободить. Таким образом, все ресурсы освобождаются при сбое программы (или выходе из нее). Это освобождение выполняется ОС Symbian автоматически. Приложения мирно умирают, не беспокоясь о том, кто уберет оставшийся после них беспорядок. Стек очистки предлагает сохранить копию указателя на выделенную память, и все элементы из стека очистки выталкиваются и уничтожаются с помощью Push (), Pop () и PopAndDestroy (). Например,

CleanupStack :: PushL (ptr) CleanupStack :: Pop () CleanupStack :: PopAndDestroy ()
Последняя правка сделана 2021-05-15 10:50:24
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте