Symbian C++编程指南:内存管理与异常处理
需积分: 3 44 浏览量
更新于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`后缀的含义,是保证代码健壮性的重要方面。通过有效的内存泄漏检测,开发者可以及时发现和解决潜在问题,提高软件的稳定性和可靠性。
106 浏览量
140 浏览量
2008-01-18 上传
107 浏览量
2008-03-20 上传
2010-06-06 上传
236 浏览量
2009-11-04 上传
点击了解资源详情
qianlima210210
- 粉丝: 89
- 资源: 49
最新资源
- OnlineConverter for onliner-crx插件
- jazmimukhtar.github.io
- 初级java笔试题-awesome-stars:我的GitHub星星精选列表
- arduinomega2560_driver.zip
- python-ternary:带有matplotlib的python三元绘图库
- 在家:预测AT家庭组的销售收入
- 实现简单的缓存功能的类库
- 不同销售业务的需用用人才标准
- Royal-Parks-Half-Marathon:该网站将宣布2021年皇家公园半程马拉松
- SoundWave:动态显示声波:rocket:
- Debuger.zip
- nodejs-express-猫鼬书
- XX战略模式研讨报告
- Payfirma-Woocommerce-Plugin:带V2 API的Payfirma Woocommerce插件
- brig:在ipfs上使用git之类的界面和基于Web的UI进行文件同步
- java笔试题算法-aho-corasick:DannyYoo在Java中实现的Aho-Corasick算法,几乎没有改进