内存五大分区

2021-12-26  本文已影响0人  兰帕德
一、栈区(stack)

由编译器自动管理。存放函数的参数值,局部变量等。操作方式类似于数据结构中的栈。
栈是由高地址往低地址扩展的数据结构,是一块连续的内存区域。即:栈顶的地址和栈的最大容量是系统预先定好的,如果申请的空间超过栈的剩余空间时,将提示溢出溢出(overflow)。因此,能从栈获取的空间较小。

二、堆区(heap)

一般由开发者分配释放,如果不释放,程序结束时,可能由操作系统回收。其与数据结构中的堆是两回事。
堆是从低地址向高地址扩展的数据结构,是不连续的内存的区域。这是由于系统使用链表存储空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。因此,堆获得的空间比较灵活,也比较大。

三、全局区(静态区)

存放全局变量和静态变量。初始化的全局变量和静态变量放在一起,未初始化的放在一起。

四、 文字常量区

寸放字符串常量,程序结束后由系统释放。

五、程序代码区

存放函数体的二进制代码。

上一篇下一篇

猜你喜欢

热点阅读