How to implement and use NewLC()

This document describes how to destroy objects created with NewLC().

When an object is created through NewLC(), use CleanupStack::PopAndDestroy() to destroy the object when its use is complete.

static CExample* CExample::NewLC()
    {
    CExample* self = new (ELeave) CExample();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }
void doExampleL()
    {
    // allocate and push to cleanup stack - leave if failed
    CExample* myExample = CExample::NewLC();
    // do something that might leave
    myExample->DoSomethingL();  
    // pop from cleanup stack and destroy
    CleanupStack::PopAndDestroy(); 
    }