The normal rule is, if you new it, you delete it ... if you don't new it, you don't delete it ... (unless you call code which new's it for you but that's a different sroty).
Simple example:
vector<MyClass> things;vector<MyClass*> things2;//... do stuff adding items and such ...//for things:things.clear();//for things2:for(vector<MyClass*>::iterator pos = things2.begin(), things2.end(); ++pos){ delete *pos; *pos = 0; // or null of course}things2.clear();
so you see, in the pointer version, you have to destroy your items manually ... because the destruction of a pointer does not automatically call delete for you (for good reason ... many many times you don't want to delete ... only the OWNER of a pointer should delete it).