非CBase类的清除栈支持
迄今有关清除的讨论都假定待清除的对象是从CBase派生的,通过调用delete清除。其它类需要由程序员提供显式的清除支持。
清除栈通过CleanupStack::PushL()的两个重载版本支持其它类型的对象。你可以压入(push):
SDK已提供了一些工具函数使构造一个适当的TCleanupItem变得容易。
RPointerArray 可以被压入清除栈并被安全销毁,通过给它制作一个TCleanupItem和一个静态函数。 在本例中,数组含有HBufC描述符。
// static cleanup function
static void PointerArrayCleanup( TAny* aArray )
{
static_cast<RPointerArray<HBufC>*>( aArray )->ResetAndDestroy();
}
RPointerArray<HBufC> array;
...
TCleanupItem arrayCleanup( PointerArrayCleanup, &array );
CleanupStack::PushL( arrayCleanup );
...
CleanupStack::PopAndDestroy(); // arrayCleanup
No related wiki articles found