gpt4 book ai didi

c++ - 局部变量的地址是否被释放?

转载 作者:行者123 更新时间:2023-11-30 01:20:13 24 4
gpt4 key购买 nike

int *intAddr(){
int i = 16;
return &i;
}

char *charAddr(){
char A = 'a';
return &A;
}

然后我通过

测试这两个函数
int *intaddr = intAddr();printf("%d\n", *intaddr);
char *charaddr = charAddr();printf(charaddr);

但结果是只有16个不是'a'。当函数 intAddr() 结束时,变量 i 被销毁。为什么*intaddr可以得到16?

最佳答案

不应该返回一个指向函数局部变量的指针。那是未定义的行为。不要做。曾经!!

原因是你的局部变量,在这种情况下,i,在你的函数退出时被销毁,所以你在函数退出后的指针将指向最多包含垃圾的内存。

关于c++ - 局部变量的地址是否被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19681203/

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