美文网首页
ios 内存五大区

ios 内存五大区

作者: 星空WU | 来源:发表于2021-03-14 14:13 被阅读0次

1、堆(heap)区

是有程序员分配和释放,用于存放运行中被动态分配的内存段。大小不定,可增加和缩减。

1)不连续的内存区域

2)向高地址扩展的数据结构

3)遵循先进先出(FIFO)原则

OC 程序中使用 alloc、new 创建的对象、C 语言中使用 malloc、 calloc、realloc 分配的空间是在堆上,需要手动释放或者由垃圾回收机制来回收。

优点

灵活方便,随取随用

缺点:

    需要手动管理,效率低,容易产生内存碎片。

    访问堆中的内存时,一般需要先通过对象读取到栈区的指针地址,然后通过指针地址访问堆区。

栈(stack)区

栈是由编译器分配和释放,用于存放程序临时创建的变量、函数的参数、局部变量等。

特点

1)是一块连续的内存区域

2)遵循先进后出的原则

3)向低地址的数据结构

优点

栈是由编译器分配和释放,不会产生内存碎片,快速高效

缺点

内存大小有限制(iOS 主线程、其他线程以及 Mac)相关说明在 Stack space 查阅

由于函数运行而临时占用的内存区域

全局(静态)区

全局区是编译时分配的内存空间,在程序运行过程中,此内存中的数据一直存在,程序结束后由系统释放。static 修饰的变量始终保存到常量区。

数据区:用来存放可执行文件中已经初始化的全局变量,也就是用来存放静态分配的变量和全局变量(.data)

BSS区:包含了程序中未初始化的全局变量。

常量区

是编译时分配的内存空间,在程序结束后由系统释放。存放的是常量,是一块特殊的区域。

代码区

用来存放函数的二进制代码,它是可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改,只允许读操作,不允许写操作

相关文章

  • 内存五大区

    iOS内存五大区 在iOS中,内存主要分为 五大区域。如下图所示 下面分别介绍这五大区 *栈区 stack 定义...

  • iOS Objective-C 内存管理简介

    iOS Objective-C 内存管理 [TOC] 在iOS开发中我们常说内存有五大区,那么都是哪五大区呢?在i...

  • iOS内存五大区

    iOS内存五大区 在iOS中,内存主要分为:栈区、堆区、全局区(静态区)、常量区以及代码区这五大区。本文将对这五大...

  • iOS 内存管理--弱引用和强引用

    前言 前面我们已经学习了几篇iOS内存相关的内容,分别如下: iOS 内存管理--内存五大区、TiggedPoin...

  • iOS-底层原理22:内存五大区

    在iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域。如下图所示 注意:内存五大区,实际是指虚拟内存...

  • Swift-进阶 03:值类型 & 引用类型

    本文主要介绍为什么结构体是值类型,类是引用类型 值类型 前提:需要了解内存五大区,内存五大区可以参考这篇文章iOS...

  • iOS 内存管理(一)-分区及引用计数

    一、内存管理五大区 在iOS中内存主要分为五大区域:栈区、堆区、静态区、常量区、代码段。 1.栈区 栈区是一段连续...

  • iOS开发 内存管理

    一、内存五大区 二、内存管理方案 iOS操作系统是针对不同场景,会提供不同的内存管理方案, TaggedPoint...

  • iOS-底层(15):iOS内存的五大区

    在iOS中,内存主要分为 栈区、堆区、全局区、常量区、代码区 五大区域。如下图所示 下面分别介绍这五大区 栈区(S...

  • iOS 内存五大区

    在iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域。如下图所示 下面分别介绍这五大区 栈区(Sta...

网友评论

      本文标题:ios 内存五大区

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