内存五大分区

一、栈区(stack)

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

二、堆区(heap)

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

三、全局区(静态区)

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

四、 文字常量区

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

五、程序代码区

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域 栈区 定义 栈是系统数据结构,其对应的进程或者线...
    HOULI阅读 1,277评论 0 1
  • iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域 1. 栈区 定义 栈是系统数据结构,其对应的进程...
    北京_小海阅读 2,728评论 0 6
  • 一、栈区 又称 堆栈 ,由编译器自动分配释放,是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}” 中定...
    奉灬孝阅读 571评论 0 2
  • 关于iOS内存的五大分区 1.bss段( bss segment ) bss段通常是指用来存放程序中未初始化的全局...
    7_c5dc阅读 651评论 0 1
  • 1.bss段( bss segment ) bss段通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区...
    dozening007阅读 5,313评论 2 5