dat*_*ili 1 c++ memory-management
可能重复:
可以在其范围之外访问局部变量的内存吗?
我有以下与内存管理相关的问题,源码从我在这里读到的文章说, 当一个变量超出范围时,该内存不再保证存储变量的值 示例代码给出
int main() {
int *p;
if (true) {
int x = 5;
p = &x;
}
cout << *p << endl; // ???
}
Run Code Online (Sandbox Code Playgroud)
它也说, 在这里,p已成为一个悬空指针(指向内存未定义的内存) 但是这段代码显示结果5.那么编写这样的代码是错误的吗?请解释我
关键词"不再保证 ".行为未定义.它可能会起作用,也可能不起作用,具体取决于编译器决定做什么.
你不能依赖这种行为.所以你永远不应该写那样的代码.