Considera che gli std::auto_ptr non sono thread safe e non sono a semantica condivisa, quindi un loro uso in caso di multithreading e/o nelle strutture della STL (vector ad esempio) è da evitare. In caso di copia da un std::auto_ptr ad un altro, il possesso del puntatore interno passa di mano, quindi si rischiano crash se si da per scontato il possesso del puntatore interno.
Comunque un'occhiata agli shared_ptr e agli scoped_ptr di boost è meglio dargliela comunque