gpt4 book ai didi

c++ - 为什么局部变量的值(它的地址存储在全局变量中)在函数执行完成后被释放

转载 作者:太空宇宙 更新时间:2023-11-04 14:41:31 24 4
gpt4 key购买 nike

这是我的代码

#include<iostream>
using namespace std;
int *ptr;
void hold(){
int a=12;
ptr=&a;
};

int main(){
hold();
cout<<"value of a="<<*ptr;
};

我得到 a=12 的值这一定不会发生,因为编译器已经释放了 a 地址处的值那为什么是 12 呢?

最佳答案

这是未定义的行为。

你可以获得任何值,或者崩溃,或者任何东西。

因为“完全符合我的预期”是“未定义行为”的一部分,你不能像“它做了我预期的那样,因此它不是未定义的,但工作完美”。这种推理是无效的。

关于c++ - 为什么局部变量的值(它的地址存储在全局变量中)在函数执行完成后被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22299175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com