Symbian解决内存泄露的机制:Cleanup Stack
概念:
构造一个全局堆栈,用来记录类对象指针。每实例化一个对象,则将对象指针备份到这个堆栈中,程序go on。最终两种情况:①所有函数执行完毕,从堆栈中将这个指针弹出销毁。②函数异常退出,则由备份指针将对象销毁。由此避免内存泄露。
使用:
CleanupStack是静态类,使用前应安装一个清除栈,即实例化 CTrapCleanup类对象。
CTrapCleanup *cleanup = CTrapCleanup::New();
TRAPD(mainError,DoStartL());
delete cleanup;
So,对每一个使用New 操作符(及其重载版本)构造的对象指针,均要在使用前将其压入清除栈,最后弹出并销毁。