Hello to everyone, and happy new year. This is my first post to this list, and I am not very sure if this is the correct place to post my question. Anyway.. I am starting to program using STL and found something strange in the vector<> implementation. Every time I call push_back to add a new object, the container call the destructor for the previous (if any) object. I had make this code to test and comprove: ****** CODE ****** #include <iostream> #include <vector> using namespace std; class Dummy { public: Dummy(int value){ mValue = value; cout << "Dummy value " << mValue << " created at address: " << (int) this << endl; }; ~Dummy(){ cout << "Dummy value " << mValue << " deleted from address: " << (int) this << endl; }; void Set(int value){ mValue = value; cout << "Dummy value " << mValue << " set in address: " << (int) this << endl; }; private: int mValue; }; main(){ vector<Dummy> MyVector; Dummy MyDummy(0); int x; for (x=0; x<5; x++){ MyDummy.Set(x); cout << "Push Back..." << endl; MyVector.push_back(MyDummy); } cout << "This is the End" << endl; }; ****** END OF CODE ****** when i run this piece, i got: ****** CONSOLE OUTPUT ******* Dummy value 0 created at address: -1073744480 (this is OK) Dummy value 0 set in address: -1073744480 (OK) Push Back... Dummy value 1 set in address: -1073744480 (OK) Push Back... Dummy value 0 deleted from address: 134524936 (I cant understand why this) Dummy value 2 set in address: -1073744480 Push Back... Dummy value 0 deleted from address: 134524944 Dummy value 1 deleted from address: 134524948 Dummy value 3 set in address: -1073744480 Push Back... Dummy value 4 set in address: -1073744480 Push Back... Dummy value 0 deleted from address: 134525096 Dummy value 1 deleted from address: 134525100 Dummy value 2 deleted from address: 134525104 Dummy value 3 deleted from address: 134525108 This is the End Dummy value 4 deleted from address: -1073744480 Dummy value 0 deleted from address: 134525264 Dummy value 1 deleted from address: 134525268 Dummy value 2 deleted from address: 134525272 Dummy value 3 deleted from address: 134525276 Dummy value 4 deleted from address: 134525280 ****** END OF CONSOLE OUTPUT ******* I think that the destructor ~Dummy() should be used to clean up some stuff in the class before deleting all pointers. So I cant understand why it gets called for the previous last item when i call push_back. I had compiled the above code with gcc 3.4 and 3.3, and get the same results, so I wonder if is my fault. I ask to someone tell me what i am doing wrong, or point me to some solution. Thanks in advice.