Suppose that a function normally allocates memory for an object, uses it, and then deallocates the memory. But if the function exits before reaching the end, either because of a return statement or an exception, it must still not exit without deallocating the memory:
void foo(int n){ my_class* ptr = new my_class; try { ptr->process(n); // may throw exception } catch (...) { delete ptr; throw; } delete ptr;}
The C++ standard libary provides an automatic pointer type, auto_ptr, which you can use by including
#include void foo(int n){ std::auto_ptr ptr(new my_class); ptr->process(n);}