学习 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次也无所谓。

来源:网络    作者:佚名    责编:豆豆技术应用

正在加载评论...