MST

星途 面试题库

面试题:C++中全局变量与局部变量在内存分布上的具体差异

请详细阐述C++中全局变量和局部变量分别存储在内存的哪个区域,以及这些区域在内存管理上有何不同特点。例如从变量的生命周期、作用域等角度分析。
34.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

全局变量存储区域及特点

  1. 存储区域:全局变量存储在静态存储区。
  2. 生命周期:全局变量的生命周期从程序开始执行到程序结束。在程序启动时,系统为全局变量分配内存,在程序结束时,系统回收这些内存。
  3. 作用域:其作用域是整个程序,从定义点开始到程序结束,只要在该程序的任何函数内部都可以访问(前提是没有同名局部变量屏蔽其访问)。

局部变量存储区域及特点

  1. 自动局部变量
    • 存储区域:存储在栈区。
    • 生命周期:当定义该局部变量的函数被调用时,系统为其在栈上分配内存,函数结束时,栈上该变量的内存空间被自动释放,其生命周期结束。
    • 作用域:作用域仅限于定义它的函数或代码块内部,出了该函数或代码块就无法访问。
  2. 静态局部变量
    • 存储区域:存储在静态存储区。
    • 生命周期:从程序开始执行到程序结束。但它只在第一次进入定义它的函数或代码块时初始化,后续调用函数时不再初始化。
    • 作用域:作用域仍然是定义它的函数或代码块内部,不过由于它存储在静态存储区,其值在函数调用结束后不会消失,下次调用函数时,它的值是上一次函数调用结束时的值。