//: C04:VectorCoreDump.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt // How to break a program using a vector #include #include using namespace std; int main() { vector vi(10, 0); ostream_iterator out(cout, " "); copy(vi.begin(), vi.end(), out); vector::iterator i = vi.begin(); cout << "\n i: " << long(i) << endl; *i = 47; copy(vi.begin(), vi.end(), out); // Force it to move memory (could also just add // enough objects): vi.resize(vi.capacity() + 1); // Now i points to wrong memory: cout << "\n i: " << long(i) << endl; cout << "vi.begin(): " << long(vi.begin()); *i = 48; // Access violation } ///:~