调用完成后指针指向何处返回被破坏变量的地址?

时间:2017-03-01 13:12:23

标签: c++

#include <iostream>
using namespace std;
int* JustATest()
{
    int x;
    x = 5 + 10;
    return &x;
}
void main()
{
    int * ptr = JustATest(); //return address
    cout << *ptr << endl; //the output is 15
}

当函数完成执行时,变量x应被销毁(解除分配),然后指针ptr指向内存中的哪一个? 变量x是在ptr指向的主堆栈帧中分配的,但它与被破坏的变量或同一个变量相同的存储单元不同?

1 个答案:

答案 0 :(得分:0)

指针变为迷路悬空指针,取消引用它将导致undefined behavior

如果您的程序具有UB(未定义行为),则其格式错误且无效。