const char * global_name;
bool foo(const std::string name)
{
new_foo(name.c_str());
}
void new_foo(const char* name)
{
global_name = name; // this makes global_name a dangling pointer, because it will still
// exist after the string in foo is destroyed
}
Y29uc3QgY2hhciAqIGdsb2JhbF9uYW1lOwoKYm9vbCBmb28oY29uc3Qgc3RkOjpzdHJpbmcgbmFtZSkKewogICAgbmV3X2ZvbyhuYW1lLmNfc3RyKCkpOwp9Cgp2b2lkIG5ld19mb28oY29uc3QgY2hhciogbmFtZSkKewogICAgZ2xvYmFsX25hbWUgPSBuYW1lOyAvLyB0aGlzIG1ha2VzIGdsb2JhbF9uYW1lIGEgZGFuZ2xpbmcgcG9pbnRlciwgYmVjYXVzZSBpdCB3aWxsIHN0aWxsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4aXN0IGFmdGVyIHRoZSBzdHJpbmcgaW4gZm9vIGlzIGRlc3Ryb3llZAp9