我有以下代码:
using namespace std;
vector<string*> v;
{
string s = "hello";
v.push_back(&s);
}
{
string ss = "goodbye";
v.push_back(&ss);
}
cout << v.at(0)->c_str() << endl;
cout << v.at(1)->c_str() << endl;
Run Code Online (Sandbox Code Playgroud)
打印
goodbye
goodbye
Run Code Online (Sandbox Code Playgroud)
如果我删除范围括号,代码将打印
hello
goodbye
Run Code Online (Sandbox Code Playgroud)
当我离开第一个范围时,到第一个字符串的指针现在指向第二个范围时到底发生了什么?
存储的指针在范围之后成为悬空指针,并且任何尝试读取它们指向的内容都会产生未定义的行为.