学习 CleanupStack
http://tech.ddvip.com 2008年09月08日 社区交流
内容摘要:听说开发Symbian程序,首要的也是最重要的之一,就是搞清楚CleanupStack
听说开发Symbian程序,首要的也是最重要的之一,就是搞清楚CleanupStack
CleanupStack 用起来貌似很简单,我写了如下代码:
假设我有一个叫 CFoo的类
CFoo *p = new (ELeave) CFoo();
CleanupStack::PushL(p);
// 使用 p 作一些事情,例如调用 p->SomeFunctionL();
// ....
CleanupStack::Pop();
delete p;
我不禁疑问为什么要这样?Windows程序从来没有这样的代码,DOS都没有,Linux貌似也没有。
Symbian这样做是为什么?相信所有开始学习Symbian的人都会有这样的疑问。
我看了一下Symbian OS的一些介绍和历史,了解到Symbian OS从开始就是针对移动设备,主要是手机PDA所
设计开发的操作系统,设计上对于资源消耗,效率和安全稳定性都比较看重。
移动设备的主要特点就是,运算能力差,内存小,需要长时间运行,有时需要长达N年。
Symbian还是一个多任务系统,多个进程共享系统内存。
Symbian还是一个开放的平台,提供开发工具和接口,允许任何人为它开发软件。
在这样的情况下,内存泄漏是一种需要极力避免的错误,由于运行时间长,哪怕一点点内存泄漏也会
随着时间增长吞噬掉系统的本来就不多的内存,从而造成系统崩溃。
=====================回忆的分割线==========================================
我回顾了一下微软体系下是怎么解决内存泄漏的
C语言时代,完全没有解决办法,一切都靠程序员自己提高警惕,小心处理所有的内存分配和释放。
那个时代,高手和一般程序员之间的差别是很大的,能够驾驭大型的程序,小心控制好内存和指针,需要
高超的技巧和丰富的经验。好在DOS也不需要太稳定,每天都重新启动N次也无所谓。
来源:网络 作者:佚名 责编:豆豆技术应用