The Cleanup utility functions support four types of clean up operation.
The cleanup utility functions offer easy ways of constructing a TCleanUpItem and
pushing it onto the cleanup stack. They support four types of clean up operation:
where the object is
deleted: template <class T> void CleanupDeletePushL(T*)
where the object's Close() member
function is called: template <class T> void CleanupClosePushL(T&)
where the object's Release() member
function is called: template <class T> void CleanupReleasePushL(T&)
where an array of objects
is deleted: template <class T> void CleanupArrayDeletePushL(T*)
The functions have the supporting templated classes:
The way in which these work is best illustrated graphically by taking CleanupClosePushL() as
an example. See the diagram below.

Figure: Effect of CleanupClosePushL and subsequent pop and destroy