gpt4 book ai didi

c - 分配给另一个函数的局部变量的自动存储类变量的地址

转载 作者:行者123 更新时间:2023-11-30 18:46:16 25 4
gpt4 key购买 nike

#include <stdio.h>

int* function1(void);

int main()
{

int x = 10;
int *p = function1();

printf("%d\n", *p);
printf("%d\n", p);
}

int* function1(void)
{
int z;
z = 20;
z++;
return &z;
}
  • 变量“z”是“function1”的本地变量,并且在“function1”已终止。
  • 现在要访问变量“z”的内存空间中的值,其地址由函数返回。
  • 所以,即使终止后,变量的内存空间也会'z' 仍将被保留,因为指针访问变量?在这种情况下,内存空间的属性是什么?
  • 或者如果其他变量分配了相同的内存空间怎么办变量“z”?

注意:代码块的GCC编译器已成功编译程序,没有任何错误和警告。

最佳答案

一般来说,您所做的事情未定义

但是,在 Intel 架构上,z 位于堆栈中,返回后,如果您不调用任何其他函数,该值可能> 仍然可用,因为内存尚未被重用。一旦您调用另一个函数,内存可能将被覆盖,因此将包含垃圾。

一般来说:不要这样做!

关于c - 分配给另一个函数的局部变量的自动存储类变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52515951/

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