Memory management is nearly automatic in C++ (with a few caveats).
Most of the time don't dynamically allocate memory.
Use local variables (and normal member variables) and they will construct and destruct automatically.
When you do need pointers use a smart pointer.
Start with using boost::shared_pointer<T> instead of pointers.
This will get you on the correct path and stop accidently deleting memory at the wrong time and 90% of your code will release correctly (unfortunately cycles will cause a problem (in terms of leaks only) and you will need to design accordingly (but we have other smart pointers to deal with cycles weak_ptr))
My fundamental rule is that a class never contain a RAW pointer. Always use some form of standard container or a smart pointer. Using these; destructor calls become automatic.
Once you have the feeling start reading about the other smart pointers and when to use them:
http://stackoverflow.com/questions/94227/smart-pointers-or-who-owns-you-baby