diff -r 89d6a7a84779 -r 25a17d01db0c Symbian3/PDK/Source/GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita Fri Jan 22 18:26:19 2010 +0000 @@ -0,0 +1,51 @@ + + + + + +Cleanup +Support OverviewProvides idioms to handle program exceptions, and to clean up memory +when exceptions occur +
Architectural relationships

Symbian platform's +clean up strategy is closely tied to its general class types, particularly +classes derived from CBase.

+
Description

The API has three key concepts: exception +handling, cleanup stack, and general cleanup item.

Exception +handling

Symbian platform does not use standard C++ exceptions +(try, catch() blocks), but supplies its +own idioms. An exception is referred to as a leave.

The trap +harness defines a point in code that will be immediately jumped to if +a leave occurs. The trap harness is set using the TRAP and TRAPD macros.

Leaves +are raised through calling functions provided by the System Static Functions +API User class, principally User::Leave(). +Many system functions can result in leaves. Leaves may also be raised in user +code.

Cleanup +stack

If a leave occurs, any heap allocated resources, such as +objects created through new(), referred to only through automatic +pointer variables will be orphaned on the heap, causing a memory leak. To +prevent such leaks, it is necessary for the program to record any such objects, +so that, on the event of a leave, the system can automatically find and clean +them up. The cleanup stack is the means by which this is done.

The +cleanup stack is provided by CleanupStack.

GUI +applications have a cleanup stack supplied to them by the application framework. +Other applications must explicitly create a cleanup stack using CTrapCleanup.

General cleanup item

By default, the cleanup stack only handles CBase -based +classes, and untyped (TAny*) objects that can be cleaned +up by a simple memory free call. The general cleanup item allows other types +of object to put on the cleanup stack, by making the caller specify a function +that is to be called to perform cleanup on the object.

The general +cleanup item interface is provided by TCleanupItem.

Template +functions are provided as shortcuts to constructing a TCleanupItem and +pushing it onto the cleanup stack. These functions are template <class +T> void CleanupDeletePushL(T*), template <class +T> void CleanupClosePushL(T&), and template +<class T> void CleanupReleasePushL(T&).

+
See also

Basic +Types Overview

System +Static Functions Overview

+
\ No newline at end of file