该语言在什么时候要求编译器将本地静态变量存储到内存中?它在编译时吗?或者在运行时调用包含本地静态变量的函数?什么时候存储在内存中的本地静态变量?
int* GetMyVariable()
{
static int A = 50;
return &A;
}
如果调用GetMyVariable(),我希望只能使用'A'的内存。如果静态不能像这样工作,那么动态分配是我唯一的选择?谢谢你的时间。
该语言在什么时候要求编译器将本地静态变量存储到内存中?它在编译时吗?或者在运行时调用包含本地静态变量的函数?什么时候存储在内存中的本地静态变量?
int* GetMyVariable()
{
static int A = 50;
return &A;
}
如果调用GetMyVariable(),我希望只能使用'A'的内存。如果静态不能像这样工作,那么动态分配是我唯一的选择?谢谢你的时间。
当是存储在存储器中的本地静态变量
这之前的程序的执行来完成。
(C99,6.2.4p3)“的对象,其识别符被声明与外部 或内部联动,或与存储类说明静态 具有静态存储持续时间,它的寿命是的整个执行 程序和它的存储值只能在程序启动前初始化一次, “。
C中的一个静态变量存在于整个程序的整个执行过程中。因此,您可以随时安全地获取该变量的地址。
存储是在编译时为其分配的。 – OldProgrammer