Symbian C++编程指南:内存管理与异常处理

需积分: 0 15 下载量 162 浏览量 更新于2024-08-02 收藏 380KB PDF 举报
"symbian C++开发注意事项.pdf" 在Symbian OS的C++开发中,有若干重要的注意事项和最佳实践。这篇文档主要面向已经具备一定C++基础,并希望深入理解Symbian平台特性的开发者。以下是关键知识点的详细说明: 1. **内存管理** - **清理堆栈(CleanupStack)**:Symbian OS强调在异常情况下正确释放资源,使用CleanupStack可以确保在函数退出时自动清理分配的内存,避免内存泄漏。所有程序应检查“资源用尽”错误,以防内存不足。 - **规则1:异常退出函数和捕获模块**: - 异常退出函数(如Exit())用于在错误发生时安全地终止执行。 - 使用`new(ELeave)`运算符确保在内存不足时抛出异常。 - `NewL()`和`NewLC()`是创建对象并自动添加到CleanupStack的标准方式。 - `TRAP`和`TRAPD`用于捕获错误,其中`TRAPD`提供了额外的调试信息。 - **规则2:使用CleanupStack**:在函数中分配的资源应当立即放入CleanupStack,这样在异常退出时,CleanupStack会自动清理这些资源,保证了内存的正确释放。 - **规则3:两阶段构造**:使用`NewL()`和`NewLC()`进行对象的两阶段构造,第一阶段创建对象,第二阶段执行对象的初始化。 2. **常见错误**: - 错误使用`TRAP`和`TRAPD`可能导致错误处理不当,必须确保在适当的地方使用它们。 - 不正确地使用`new`运算符可能导致内存泄露或未初始化的对象。 - 后缀`L`表示函数返回一个局部对象,错误地使用可能导致对象生命周期管理问题。 3. **内存泄漏检测**: - 在WINS模拟器中,可以利用工具来检测内存泄漏,帮助开发者定位和修复问题。 4. **检查和严重提示(A“Severe”Message)**:Symbian OS鼓励使用`User::LeaveIfError()`或`User::Info()`等函数来记录和处理错误,这有助于调试和诊断。 总结起来,Symbian C++开发的关键在于理解并遵循内存管理规则,尤其是使用CleanupStack进行异常情况下的资源清理,以及正确使用异常退出机制和捕获模块。同时,避免常见的编程错误,如滥用`new`运算符和错误理解`L`后缀的含义,是保证代码健壮性的重要方面。通过有效的内存泄漏检测,开发者可以及时发现和解决潜在问题,提高软件的稳定性和可靠性。