A common error for C# or Java programmers moving to C++ is the tendency to use heap allocation (new) everywhere. But the general strategy for C++ is to 1. Use dynamic allocation only when its necessary. 2. Prefer using library data structures, e.g., std::vector, std::list, to rolling your own. 3. If you must use dynamic allocation, use a smart pointer class, e.g., auto_ptr or boost::shared_ptr Kevin