Leave 和 Clearup

  在Symbian当中,v9以前的版本都不支持C++标准的异常处理,而是采用了Leave代替。任何一个可能引发Leave的函数,都必须用L结尾,反之亦然。而且,Leave函数一般不应该返回错误码,而是应该用Leave把错误码带出去。

  但是如果在一个函数当中申请了动态内存,而在申请和释放之间存在着可能导致Leave的函数调用,就可能导致内存泄漏,所以任何局部指针拥有内存的情况,都必须压入到Clearup当中,以避免内存泄漏。

  在Symbian当中,资源管理是非常非常重要的,所以代码规范也十分重要:

T-Class:只有内置变量或者其他T-Class作为成员,如果有指针,不能有has-a关系的指针。不需要也没有析构函数,可以在栈上声明;

C-Class:可能有has-a关系的指针,需要构造和析构函数,只能在堆上声明,必须从CBase继承;

R-Class:包含资源的类,需要二次构造和二次析构来避免资源的泄漏,需要构造函数和析构函数,只能在堆上声明,必须从CBase继承;

M-Class:接口类,不允许出现成员变量,在减少代码重复的时候,允许出现有实现的函数。

[原文在百度空间已经关闭]