home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C20 / VectorCoreDump.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  796 b   |  27 lines

  1. //: C20:VectorCoreDump.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // How to break a program using a vector
  7. #include <vector>
  8. #include <iostream>
  9. using namespace std;
  10.  
  11. int main() {
  12.   vector<int> vi(10, 0);
  13.   ostream_iterator<int> out(cout, " ");
  14.   copy(vi.begin(), vi.end(), out);
  15.   vector<int>::iterator i = vi.begin();
  16.   cout << "\n i: " << long(i) << endl;
  17.   *i = 47;
  18.   copy(vi.begin(), vi.end(), out);
  19.   // Force it to move memory (could also just add
  20.   // enough objects):
  21.   vi.resize(vi.capacity() + 1);
  22.   // Now i points to wrong memory:
  23.   cout << "\n i: " << long(i) << endl;
  24.   cout << "vi.begin(): " << long(vi.begin());
  25.   *i = 48;  // Access violation
  26. } ///:~
  27.