If possible, you should use new in constructors and delete in desstructors.
So at the end of your program, all the allocated memory will be released.
If you use the right library, such as STL containers, and the right type of
smart pointers (look for them in boost.org or search "C++ TR1"), you seldom
need to use new and delete in your code. Then you don't have to worry about
memory leak caused by unmatched new and delete.