ответ

1

Управление памятью в BADA следует за обычной политикой обработки памяти C++ .

Приложение всегда отвечает за удаление памяти он выделяет (каждый вызов новых должен иметь симметричный вызов для удаления)

памяти в Баде во время выполнения делится между:

статической памятью : Назначается компилятором и является частью двоичного кода приложения во время выполнения.

Stack память: Выделен и освобождается во время выполнения операционной системы как активация функции кадров для запущенной программы создается и выпускается

Heap память: Выделена и освобождается динамически в соответствии с просьбой программой.

Обязанность собственность объекта

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

Однако, как только объект возвращается фреймворком, и объект передается в собственность владельца вызывающего объекта, фреймворк больше не знает, когда объект закончен.

В этом случае простое правило, что распределение и освобождение памяти всегда должно быть выполнено, симметрично больше не удерживается.

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

Эта задача решается почти тривиально BADA с помощью простого именования и связано правило

конвенции

Продольный «N» в имени метода, например: SomeType() в SomethingN()

Правило

Вызывающий абонент всегда несет ответственность за удаление объектов, возвращенных каркасным методом , названный в качестве конечного «N

+0

Некоторые исключения из этого. Когда вы выделяете элементы управления с помощью 'new' и добавляете их в контейнер (то есть панель), вы отказываетесь от владения. Рамка освобождает их, когда пользовательский интерфейс срывается. Кроме того, IList :: RemoveAll (true) освобождает все содержащиеся объекты. –

1

Программирование на bada вам в основном приходится иметь дело с кучей памяти. В некоторых классах bada-API вам необходимо использовать автоматическое управление памятью (Osp::Base::Collection может освобождать память своих элементов, если вы хотите, в Osp::Ui::Container метод RemoveControl() освободит память его ребенка).

Но в общем случае вам необходимо освободить память памяти самостоятельно.