Symbian C++编程最佳实践与内存管理

需积分: 0 35 下载量 123 浏览量 更新于2024-12-16 收藏 380KB PDF 举报
"symbian C++编程注意规则" 在Symbian OS的C++编程中,遵循特定的规则和最佳实践对于确保代码的稳定性和效率至关重要。这份文档由诺基亚论坛提供,主要针对Symbian C++程序员,旨在帮助他们理解和避免常见的编程陷阱。 1. 引言 这份文档面向的读者是对Symbian C++编程有基础了解的开发者,其目的是为了提升编程质量,防止因不当操作导致的问题。文档内容涵盖内存管理、异常处理和资源清理等方面。 2. 内存管理 2.1 清除堆栈(CleanupStack) Symbian OS中的内存管理特别强调了清除堆栈的使用,以确保在异常情况下资源得到正确释放。所有程序都应该检查可能出现的"资源用尽"错误,并采用适当的方法来处理。 2.1.1 程序应该始终检查资源是否可用,以防止内存耗尽导致的崩溃。 2.1.2 传统调试方法通常依赖于try-catch结构,但这在Symbian OS中不是最佳实践。 2.1.3 使用传统方法可能导致在异常情况下内存泄漏,因为资源可能未被正确释放。 2.1.4 Symbian OS引入了清除堆栈机制,用于解决上述问题。 2.2 异常退出函数和捕获模块 2.2.1 异常退出函数是在发生错误时调用的,用于清理资源。 2.2.2 `new(ELeave)`运算符用于创建对象,如果内存不足,会抛出ELeave异常。 2.2.3 `NewL()`和`NewLC()`是构造函数的扩展形式,用于支持两阶段构造并处理异常。 2.2.4 `TRAP`和`TRAPD`是用于异常处理的宏,捕获模块帮助跟踪错误。 2.3 使用清除堆栈 2.3.1 清除堆栈用于存储临时对象的指针,确保在异常情况下能正确删除它们。 2.3.2 开发者应该习惯于在函数中使用清除堆栈来管理对象的生命周期。 2.4 两阶段构造 2.4.1 `NewL()`和`NewLC()`函数允许在分配内存和初始化对象之间进行分离,以确保在内存分配失败时不会执行初始化代码。 2.5 公共错误 2.5.1 错误使用`TRAP`和`TRAPD`可能导致错误的异常处理。 2.5.2 不正确地使用`new`运算符可能导致内存泄漏或未定义的行为。 2.5.3 在不应使用的地方使用后缀`L`(表示本地对象)可能导致资源管理问题。 2.6 内存泄漏检测 2.6.1 在WINS模拟器中,可以使用特定工具来检测内存泄漏,帮助定位和修复问题。 2.7 检查和严重提示 文档还提到了使用检查和严重提示工具来帮助调试和优化代码,确保程序的健壮性。 总结,Symbian C++编程的关键在于理解并遵循内存管理规则,特别是清除堆栈的使用,以及异常处理机制。通过遵循这些规则,开发者可以编写出更稳定、更易于维护的Symbian应用程序。