c语言中全局变量内存,C语言——全局变量和局部变量在内存中的区别——及编译后的内存分区【栈-堆-全局存储区-文字常量区-程序代码区】...

目录:

一:全局变量

二:局部变量

三:C语言经过编译之后将内存分为以下几个区域

(1)栈(stack)

(2)堆(heap)

(3)全局(静态)存储区

(4)文字常量区

(5)程序代码区

四:区别

1. 全局变量

2.局部变量

一:全局变量

全局变量保存在内存的全局存储区中,占用静态的存储单元

二:局部变量

局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元

三:C语言经过编译之后将内存分为以下几个区域

(1)栈(stack)

由编译器进行管理

自动分配和释放

存放函数调用过程中的各种参数、局部变量、返回值以及函数返回地址

操作方式类似数据结构中的栈【类似】

(2)堆(heap)

用于程序动态申请分配和释放空间

C语言中的malloc和free,C++中的new和delete均是在堆中进行的

正常情况下,程序员申请的空间在使用结束后应该释放

若程序员没有释放空间,则程序结束时系统自动回收

注意:这里的“堆”并不是数据结构中的“堆”。【不类似】

(3)全局(静态)存储区

分为DATA段和BSS段:

DATA段(全局初始化区)存放初始化的全局变量和静态变量

BSS段(全局未初始化区)存放未初始化的全局变量和静态变量

程序运行结束时自动释放

其中BBS段在程序执行之前会被系统自动清0

你可能感兴趣的:(c语言中全局变量内存)