程序中块内静态变量的内存概念
程序中的静态变量存在于所有执行时间的存储器中,而子程序的静态变量创建时(通过调用子程序)和销毁(通过终止子程序),通过按子程序的激活记录并将其从程序的函数调用堆栈中弹出,但是:
主程序中的静态变量(我是指控制结构还是任何{}块)呢? 他们不能在他们被定义的块之外访问,他们的内存概念如何?
它们在整个程序执行过程中是否存在于内存中,但不能在其块之外访问,或者除了子程序之外还有每个块都有激活记录?
所有情况下的静态变量在程序的整个生命周期内分配一次。 (我认为你的问题中的“子程序”是指C函数。)你的问题是特定于正在使用的编程语言,所以我将假设C.
代码块“查看”(或不看)静态变量的能力是独立的,并且是由编译器的词法范围规则强制实施的虚构。
特别是在C中,全局作用域,函数作用域和块作用域的static
变量在程序的整个生命周期中都会为每个程序存储一次。 在下面的例子中(至少)在程序启动时将分配3个字:
static int globalWord;
int aFunction(void) {
static int aFunctionPrivateStatic;
}
int main(void) {
while (1) {
static int whilePrivateStatic;
// ...
}
// ...
}
有关更完整的示例,请参见http://en.wikipedia.org/wiki/Static_variable。
链接地址: http://www.djcxy.com/p/84329.html上一篇: memory concept for static variables inside the blocks in a program