Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Zombie Iterator
- *
- * Vector going out of scope leaving zombie Iterator
- * Is this a dangling pointer?
- */
- #include <vector>
- #include <iostream>
- int main() {
- // these are in the scope of main()
- std::vector<int>::iterator it;
- std::vector<int>::iterator end;
- if ( true ) {
- // now we are in the scope of this block, lets cause trouble
- // this vector only exists for this block... then it's gone
- std::vector<int> v;
- // fill the vector with 10 integers
- for ( int i = 10 ; i > 0 ; i-- ) {
- v.push_back(i);
- }
- // get our iterators (one at the beginning, the other at the end
- it = v.begin();
- end = v.end();
- std::cout << "iterator while vector alive: " << *it << '\n';
- }
- // The vector (v) is now gone... the following would be a compile time error
- // v.pop_back();
- // But this is not a compile time error...
- for ( ; it != end ; it++ ) {
- std::cout << "iterating over dead vector: " << *it << std::endl; // naughty
- *it = 0; // very naughty
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement