我发现很难了解内存管理是如何在BADA操作系统中完成的。
是否有人对此有任何了解,或者是否所有智能手机都有类似的内存管理概念?
发布于 2012-02-21 15:38:38
BADA中的内存管理遵循传统的C++内存处理策略。
一个应用程序总是负责删除它分配的内存(每次调用new必须有一个对称的调用来删除)
运行时BADA中的内存分为:
静态内存:由编译器分配,在运行时是应用程序二进制的一部分。
堆栈内存:操作系统在运行时为正在运行的程序创建和释放函数激活帧时分配和释放
堆内存:根据程序的请求动态分配和释放。
对象所有权责任
与内存分配和对象构造有关的一个小而重要的复杂问题是,有时框架方法需要框架来分配一个新对象并将其返回给调用应用程序。
但是,一旦框架返回该对象,并将该对象传递给调用方的所有权,该框架就不再知道对象何时完成。
在这种情况下,分配和释放内存的简单规则应该总是对称地完成不再适用。
那么,应用程序程序员的问题是,要知道应用程序或框架是否应该负责清理给定的对象。
这个问题在BADA中几乎是通过一个简单的命名约定和相关的规则来解决的。
约定
在方法名中尾随‘N’,例如: Sometype()到SomethingN()
规则
调用方始终负责删除框架方法所返回的对象,该方法名为尾部N
发布于 2012-02-20 11:00:56
在bada上编程,您主要需要处理堆内存。在某些bada-API类中,您必须使用自动内存管理(如果需要,Osp::Base::Collection
可以释放其元素的内存;在Osp::Ui::Container
方法中,RemoveControl()
将释放其子内存)。
但在一般情况下,您需要自己处理释放内存。
https://stackoverflow.com/questions/9359834
复制相似问题