Symbian OS 编程内存管理与规范指南

Symbian OS 编程内存管理与规范指南

一、内存管理与编码规范

1.1 清除堆栈 (CleanupStack) 的重要性

Symbian OS 的内存管理机制区别于传统桌面操作系统,特别是在处理资源耗尽的问题上。程序设计时需特别注意在资源耗尽场景下的处理,通过恰当的编码方式保障程序的健壮性。

  • 1.1.1 资源用尽错误的检查:在编写 Symbian 应用时,开发者需随时考虑内存不足、文件句柄耗尽等问题。应用程序应当妥善处理这些情况,并释放已分配的资源,避免程序崩溃或系统不稳定。

  • 1.1.2 传统侦错方法的局限性:传统的 try-catch 错误处理方法在 Symbian OS 上存在一定局限,尤其是在资源耗尽情况下,传统方法难以清理资源。

  • 1.1.3 Symbian OS 的解决方案:Symbian OS 提供了清除堆栈 (CleanupStack) 机制,可自动跟踪并清理函数中的资源分配。

二、使用清除堆栈的基本规则

2.1 异常退出函数与捕获模块

Symbian OS 推荐使用特定函数和关键字来管理资源。

  • 2.1.1 User::Leave() 函数:用于表示异常退出,可传递错误码;常与 User::Panic() 搭配使用。

  • 2.1.2 new(ELeave) 运算符:确保在资源分配失败时抛出 ELeave 异常。

  • 2.1.3 NewL()NewLC()

    • NewL(): 分配非临时资源,如创建对象实例。
    • NewLC(): 分配临时资源,退出函数时自动清理。
  • 2.1.4 TRAPTRAPD 的使用:用于捕获异常,其中 TRAP 忽略错误,TRAPD 可进行错误诊断。

三、常见错误

  • 3.1 误用 TRAPTRAPD:应仅在可安全忽略或处理错误时使用,避免导致性能问题或资源泄露。

  • 3.2 错误使用 new 运算符:使用普通 new 而非 new(ELeave) 会导致资源泄露。

  • 3.3 错误使用后缀‘L’:在 Symbian OS 中后缀‘L’表示对象永久性,错误使用可能引起资源管理混乱。

四、内存泄漏检测

4.1 使用 WINS 模拟器中的工具:Symbian OS 提供 WINS 模拟器帮助检测内存泄漏。开发者可利用该工具分析哪些资源未释放。

五、检查与严重提示 (Asserts and Panics)

5.1 使用检查与严重提示User::Assert()User::Panic() 用于调试,检查条件与报告严重错误,帮助及时发现潜在问题。

六、系统资源的使用 (ROM 与 RAM)

6.1 优化 ROM 与 RAM 使用:

- 避免不必要的导出函数,避免复制粘贴代码。

- 尽量减少虚函数使用,减少 TRAP 块,正确使用 _L 宏。

- 尽早释放不再使用的资源,分阶段执行复杂数据任务,减少内存消耗。

七、减少堆栈使用

7.1 减少堆栈使用的方法:

- 正确使用描述符,避免大堆栈数组和递归,尤其是在内存紧张的环境中。

八、生成 (Build) ARM 目标文件

8.1 函数导出:确保正确导出函数,避免因 DLL 初始化不当导致错误。

Symbian 编码规范帮助开发者理解内存管理与资源使用,优化应用性能并提升用户体验。

pdf 文件大小:379.76KB