I have a simple question hopefully - how does one free memory which was allocated in the try block when the exception occurs? Consider the following code:
Either move the new before the try, so that the pointer is still in scope, or use a smart pointer like shared_ptr or unique_ptr (in a pinch, auto_ptr, but it has issues) that will clean up for you on exit. Exceptions are a huge reason why smart pointers are important.