#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
vector<string> arr;
arr.push_back("one");
arr.push_back("two");
arr.push_back("three");
auto& x = arr[2];
cout << "addr x: " << &x << endl;
/*
for (int i=0; i<1000; ++i) {
arr.push_back("num: " + i);
}*/
cout << "addr x: " << &x << endl;
auto& x2 = arr[2];
cout << "addr x2: " << &x2 << endl;
cout << x << endl; // segfault arr had been reallocated x points to freed memory
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgppbnQgbWFpbigpIHsKCgl2ZWN0b3I8c3RyaW5nPiBhcnI7CgkKCWFyci5wdXNoX2JhY2soIm9uZSIpOwoJYXJyLnB1c2hfYmFjaygidHdvIik7CglhcnIucHVzaF9iYWNrKCJ0aHJlZSIpOwoJCglhdXRvJiB4ID0gYXJyWzJdOwoJCgljb3V0IDw8ICJhZGRyIHg6ICIgPDwgJnggPDwgZW5kbDsgCgkKCS8qCglmb3IgKGludCBpPTA7IGk8MTAwMDsgKytpKSB7CiAgICAgICAgYXJyLnB1c2hfYmFjaygibnVtOiAiICsgaSk7CiAgICB9Ki8KICAgIAogICAgY291dCA8PCAiYWRkciB4OiAiIDw8ICZ4IDw8IGVuZGw7IAogICAgCiAgICBhdXRvJiB4MiA9IGFyclsyXTsKICAgIAogICAgCiAgICBjb3V0IDw8ICJhZGRyIHgyOiAiIDw8ICZ4MiA8PCBlbmRsOyAKICAgIAogICAgY291dCA8PCB4IDw8IGVuZGw7IC8vIHNlZ2ZhdWx0IGFyciBoYWQgYmVlbiByZWFsbG9jYXRlZCB4IHBvaW50cyB0byBmcmVlZCBtZW1vcnkKCQoJcmV0dXJuIDA7Cn0=