How to use heap descriptors as return types?
I want to create a new descriptor in my function. How do I return it to the caller?
You must return an HBufC* as follows:
HBufC* CreateSomeDescriptorL()
{
_LIT(KBert, "bert");
HBufC* newBert = KBert().AllocL();
return (newBert);
}
The calling function needs to know that it must take ownership of the returned heap-based descriptor and be responsible for deleting it when it has finished with it. Failure to do this is a common cause of memory leaks.
A similar function, which leaves the created descriptor on the cleanup stack for the caller, would be coded as follows:
HBufC* CreateSomeDescriptorLC()
{
_LIT(KBert, "bert");
HBufC* newBert = KBert().AllocLC();
return (newBert);
}
further reading http://descriptors.blogspot.com/
Saturday, August 02, 2008
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment