<分区>
所以对于这样的代码:
class foo{
void bar(){
static int var = 2;
}
};
我知道对于 foo
类型的所有对象,只有一个 var
的实例,但 C++ 是否为变量 var
分配内存,甚至在创建 foo 之前?我问这个是因为即使在 foo
被销毁之后,var 仍将存在于整个程序中。
<分区>
所以对于这样的代码:
class foo{
void bar(){
static int var = 2;
}
};
我知道对于 foo
类型的所有对象,只有一个 var
的实例,但 C++ 是否为变量 var
分配内存,甚至在创建 foo 之前?我问这个是因为即使在 foo
被销毁之后,var 仍将存在于整个程序中。
最佳答案
does C++ allocate memory for variable
var
even before foo is created?
是的,从某种意义上说,var
的值最终将占用的内存是预先保留的。 2
的常量值何时写入var
的内存是实现定义的。标准唯一保证的是它会在您调用 foo::bar()
之前的某个时刻发生。
如果您使用具有副作用的表达式初始化静态变量(例如,通过调用函数),将在您第一次执行该函数时执行此调用。
after foo has been destroyed, var will exist throughout the program.
var
将独立于您的程序可能创建的任何 foo
实例而存在。当您随时调用 foo::bar()
时,您将获得程序分配给它的 var
的最后一个值。
关于成员函数中的 C++ 静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25796758/