WEB开发网
开发学院手机开发Symbian 开发 Symbian 清除栈 CleanupStack 阅读

Symbian 清除栈 CleanupStack

 2010-06-03 23:05:00 来源:WEB开发网   
核心提示:{RFs theFs;User::LeaveIfError(theFs.Connect());CleanupClosePushL(theFs);……..//执行可能发生异常退出的代码CleanupStack::PopAndDestroy(&theFs);}Symbian OS 提供的这三个工具模板函数,它们分别对应于R

{

RFs theFs;

User::LeaveIfError(theFs.Connect());

CleanupClosePushL(theFs);

……..//执行可能发生异常退出的代码

CleanupStack::PopAndDestroy(&theFs);

}

Symbian OS 提供的这三个工具模板函数,它们分别对应于Release()、Delete()、Close()这三个清除方法,这3个工具函数都会生成一个TCleanupItem类型的对象并将其压入清除栈中。

comments:其实是上面的三个函数会生成一个TCleanupItem对象,然后这个对象会自动调用相应的Close()或是其他的函数。

小结:

系统中每个分配了资源的可执行单元(或者线程)都有它自己的清理栈和最高级别的TRAP/TRAPD宏来做异常处理和一些退出后的善后工作。之所以引入清除栈,就是为了解决堆内存泄漏的问题,注意是堆内存,如果对象被创建在了栈上的话,这是不关清除栈的事的,因为栈上的对象所占空间由栈自动管理。

注意:对于C类对象而言,CleanupStack::Pop()方法仅仅是将C类对象指针从清除栈中弹出了而已,并没有调用这个C类对象的析构函数,若要析构,需要再加语句delete c,或者可以直接使用CleanupStack::PopAndDestroy()同时完成上面两个动作。

上一页  1 2 3 4 5 

Tags:Symbian 清除 CleanupStack

编辑录入:coldstar [复制链接] [打 印]
赞助商链接