Because I was introduced to C++ through MSVS.NET, I quickly got used to the managed extensions before learning standard C++. Now, I'm having to go back and relearn a lot of things so that my code is (somewhat) portable. Anyway, I've read that the best rule of thumb for standard C++ memory allocation, is that for every new, you should have a matching delete, but how does this apply to inter-class instantiation? For example, if I instantiate an object within a class's constructor, would the best place to delete it be within the destructor? Is this even necessary (does the destructor do this for me)? Should I create a method for this purpose instead?