美文网首页
内存存储之五大分区,详述栈区和堆区的区别

内存存储之五大分区,详述栈区和堆区的区别

作者: 南山码僧 | 来源:发表于2020-04-02 15:00 被阅读0次

内存五大分区:

■ 代码段:存放函数体的二进制代码

■ 文字常量区:常量字符串就是放在这里的, 程序结束后由系统释放。(如:strcpy(p1, "123456");  123456就存放在常量区)

■ 全局区:又叫做静态存储区,主要存放全局变量和静态变量。初始化和未初始化的分开存放。程序结束由系统释放。

下边重点说下栈区和堆区在C/C++和JS语言中的不同意义。

C/C++中

栈区:

由系统自动分配释放,速度快、操作方便,不需要程序员手动操作干预。主要用来存放函数的传参值、局部变量值等。其操作方式类似数据结构中的栈,先入后出、后入先出。栈区向地址减小的方向增长。

堆区:

由程序员向操作系统申请一块内存,当系统收到申请后会遍历一个记录内存空闲的地址链表,寻找第一个大于申请空间大小的堆结点分配给程序员,并从空闲链表中删除。分配速度慢、地址不连续、容易碎片化。并且系统不负责回收,需要程序员自己回收销毁。

JS中

栈内存:

存储值为基础类型(在内存中空间大小固定)的变量的名和值,如:Number, String, Boolean, Null, Undefined等。

存储值为引用类型(在内存中空间大小不固定)的变量的名和指针地址,该指针地址指向存储该对象具体值的堆内存地址。

随着执行环境的结束,系统回收销毁。(标记清除策略)

堆内存:

存放引用类型的具体数据。

所有引用引用它的变量都不存在时,系统回收销毁。(引用计数策略)

相关文章

  • Block 有三种类型

    内存五大内存分区-----堆、栈、自由存储区、全局/静态存储区和常量存储区.1. 堆,就是那些由new分配的内存块...

  • 堆栈区别

    五大内存分区在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由...

  • Swift--004:内存分区 & 方法调度

    内存分区 内存五大区内存分区按地址从高到低排列: 栈区->堆区->全局静态区->常量区-> 代码区栈区的地址比堆区...

  • iOS 内存分区

    iOS中内存分区为五大区:栈区、堆区、静态区、常量区、代码段 栈区 是一段连续的内存区域,由高地址向低地址存储,遵...

  • 五大内存区

    一:五大内存区 说到内存分区,内存即指的是RAM。 栈区,堆区,全局区,常量区,代码区 1、栈区: 创建临时变量时...

  • 内存存储之五大分区,详述栈区和堆区的区别

    内存五大分区: ■ 代码段:存放函数体的二进制代码 ■文字常量区:常量字符串就是放在这里的, 程序结束后由系统释放...

  • iOS 内存

    五大内存区域 栈区,堆区,全局区,常量区,代码区,五大内存区域之外还有 自由存储区也称之五大区域之外区、 栈区创建...

  • iOS 底层基础知识(1)

    1.五大内存区域 栈区,堆区,全局区,常量区,代码区五大内存区域之外还有 自由存储区也称之五大区域之外区 1.1栈...

  • IOS底层原理-内存五大区域

    介绍内存的五大区域:栈区,堆区,静态区,常量区,代码段 栈区 局部变量和方法实参 栈区特点: 存储空间有限 . i...

  • iOS-归纳

    iOS内存分区,堆区 栈区等 内存管理 属性关键字、内存分区总结 iOS- 数据存储iOS开发数据库-FMDBiO...

网友评论

      本文标题:内存存储之五大分区,详述栈区和堆区的区别

      本文链接:https://www.haomeiwen.com/subject/dfotphtx.html