我有以下代码:
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;
哪个打印
goodbye
goodbye
如果删除范围括号,则将打印代码
hello
goodbye
当我离开第一个作用域时,指向第一个字符串的指针现在指向第二个作用域究竟会发生什么?
最佳答案
存储的指针在作用域之后变成了悬空的指针,任何尝试读取它们指向的内容的尝试都会产生未定义的行为。