c ++ stl中向量元素的范围

Pra*_*yay -2 c++ stl

对于以下计划部分:

std::vector<int*> v;
{
    int a=5000;
    int *aa =&a;
    vv.push_back(aa);
    cout<<"\n"<<*(v[0]);
}
cout<<"\n"<<*(v[0]);
Run Code Online (Sandbox Code Playgroud)

输出:

5000
5000
Run Code Online (Sandbox Code Playgroud)

我怀疑如果插入指向矢量的指针,矢量应该有地址,并且当从局部块外部访问它时它不应该打印elemet因为"a"具有局部范围.在这里,该指针的对象具有局部范围,仍然可以从范围外部访问.请求帮助.谢谢

Mar*_* A. 5

向量抓取指针的副本,使用它完全有效.

问题在于指针指向的地址:您正在访问可能已被回收(即使用)的超出范围的堆栈内存.您无法保证此访问权限,从而调用未定义的行为.