Straight out of Effective STL (Scott Meyers) comes a tip that I and most of you out there already know... its pretty obvious:
Remember to delete the pointers you put into any container.
// ... fill with a bunch orders you will use right here and right now, dynamically allocated
And Mr. Meyers goes on to describe a nice templated function within a struct called DeleteObject, which will be used in conjunction with for_each to delete everything afterwords. I'd say this is pretty obvious to most C++ programmers who actually have a job with C++, so here's the kicker:
Never create a container of auto_ptrs.
Basically, auto_ptrs are a wrapper for pointers which aims "transfer ownership" of pointers between auto_ptrs. So if you use a list, vector, map of auto_ptrs, you could easily lose the address of some dynamically acquired memory with the use of an algorithm. One particular algorithm he brings up is quicksort, which uses a pivot element to sort, which is a temporary copy within the quicksort implementation. So, due to the destructive nature of an auto_ptr, you will lose the memory address somewhere with this.