c - C中局部变量的内存分配

标签 c memory-management

Possible Duplicate:
Can a local variable's memory be accessed outside its scope?
Scope vs life of variable in C

int *p;

void foo()
{
    int i = 5;
    p = &i;
}

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

int main()
{
   foo();
   foo1();
   return 0;
}

输出:5(foo1()打印i的值)

注意:我在 Linux 上运行这个程序

据我所知,局部自动变量的范围仅限于 block /函数的生命周期。

  1. foo() 中的变量 i 存储在哪个内存段中?或者函数的所有局部变量都存储在哪里?
  2. 我如何从其他函数访问它?

最佳答案

访问 foo1() 中的 *p 时,您正在调用未定义的行为。 如果您添加了这样的功能:

void do_very_little(void)
{
    char buffer[] = "abcdef";
    puts(buffer);
}

并在调用 foo()foo1() 之间调用它,您可能会得到不同的输出。但这并不能保证;未定义行为的有趣之处在于,任何事情都可能发生,而且您没有理由提示。

关于c - C中局部变量的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11643817/

相关文章:

创建固定大小数组的每个可能值

C - inet_pton() 不生成网络字节顺序

cocoa - 检测 cocoa 线程中的泄漏?

c++ - 关于函数中定义的 vector

c - Quad 上的纹理贴图不起作用

c - 无法理解 gcc 的汇编输出

c - 错误: 'for' loop initial declarations are only allowed in c99 mode

c++ - 为什么 calloc 调用可能会导致内存损坏而 malloc 工作正常

ios - 重复调用 "GPUImagePicture ProcessImage"内存警告导致App崩溃

c++ - 以下数组从哪里获取内存?