2014-02-17 35 views
0

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

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

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

+0

存储是在编译时为其分配的。 – OldProgrammer

回答

1

当是存储在存储器中的本地静态变量

这之前的程序的执行来完成。

(C99,6.2.4p3)“的对象,其识别符被声明与外部 或内部联动,或与存储类说明静态 具有静态存储持续时间,它的寿命是的整个执行 程序和它的存储值只能在程序启动前初始化一次, “。

1

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

相关问题