何时本地静态变量存储在内存中?

时间:2014-02-17 20:03:38

标签: c

语言在什么时候需要编译器将本地静态变量存储到内存中?是在编译时吗?或者在运行时调用包含本地静态变量的函数?

int* GetMyVariable()
{
    static int A = 50;
    return &A;
}

如果调用GetMyVariable(),我希望只能为'A'使用内存。如果静态不能像这样工作,那么动态分配是我唯一的选择吗?谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

  

何时存储在内存中的本地静态变量

这是在执行程序之前完成的。

  

(C99,6.2.4p3)“标识符用外部声明的对象           或内部链接,或与存储类说明符静态           有静态存储时间。它的生命周期是整个执行           程序及其存储的值只初始化一次,           在程序启动之前。“

答案 1 :(得分:1)

在整个程序执行过程中,C中存在一个静态变量。因此,您可以随时安全地获取该变量的地址。