gpt4 book ai didi

c - 根据堆栈的定义,这怎么行不通?

转载 作者:行者123 更新时间:2023-11-30 20:37:07 25 4
gpt4 key购买 nike

int *something() {
int x = 5;
int *b = &x;
return b;

}

int main() {
int z = *something()
printf("%d",z);

}

如果函数调用something,它是如何工作的分配在堆栈上,然后 int x 和 int *b 在返回值后被删除

如果它们被删除,我们将无法遵循 something 返回的指针因为它指向的是int x已从堆栈中删除

最佳答案

您的问题是 x 是一个临时变量,当它在 something() 末尾超出范围时,尽管 b指向它的地址,当 x 超出范围时,b 将指向未定义的内存,并且取消引用它将导致未定义的行为。

关于c - 根据堆栈的定义,这怎么行不通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33581833/

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