首页 > 社交 > 科普中国

全局变量和局部变量在内存中的区别

常驻编辑 科普中国 2022-06-24 变量   局部   初始化   全局   静态   函数   单元   分配   区别   内存   语言   程序

全局变量保存在内存的全局存储区中,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。Zxv拜客生活常识网

C语言经过编译之后将内存分为以下几个区域:Zxv拜客生活常识网

(1)栈(stack):由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数、局部变量、返回值以及函数返回地址。操作方式类似数据结构中的栈。Zxv拜客生活常识网

(2)堆(heap):用于程序动态申请分配和释放空间。C语言中的malloc和free,C++中的new和delete均是在堆中进行的。正常情况下,程序员申请的空间在使用结束后应该释放,若程序员没有释放空间,则程序结束时系统自动回收。注意:这里的“堆”并不是数据结构中的“堆”。Zxv拜客生活常识网

(3)全局(静态)存储区:分为DATA段和BSS段。DATA段(全局初始化区)存放初始化的全局变量和静态变量;BSS段(全局未初始化区)存放未初始化的全局变量和静态变量。程序运行结束时自动释放。其中BBS段在程序执行之前会被系统自动清0,所以未初始化的全局变量和静态变量在程序执行之前已经为0。Zxv拜客生活常识网

(4)文字常量区:存放常量字符串。程序结束后由系统释放。Zxv拜客生活常识网

(5)程序代码区:存放程序的二进制代码。Zxv拜客生活常识网

显然,C语言中的全局变量和局部变量在内存中是有区别的。C语言中的全局变量包括外部变量和静态变量,均是保存在全局存储区中,占用永久性的存储单元;局部变量,即自动变量,保存在栈中,只有在所在函数被调用时才由系统动态在栈中分配临时性的存储单元。Zxv拜客生活常识网

相关阅读:

  • ts类型断言(二)
  • 山西大学苏晓龙教授研究组在远程制备非高斯态方面取得
  • 基于深度学习Autoencoder的信用卡欺诈异常检测,效果非
  • 双缝实验更恐怖,贝尔不等式检测,世界真实存在性迎来终极
  • 时间变量理论:运动速度越快,其时间就过得越慢
  • 万丘林教授提出:宇宙或许是个巨大的神经网络,难道它真是
  • ansible
  • Matlab基础入门手册(第六章
  • pytest接口自动化测试框架
  • 烂尾楼业主停贷,是房地产市场风险处置中最大的变量
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。