美文网首页iOS程序员
iOS 内存五大区

iOS 内存五大区

作者: wp_Demo | 来源:发表于2019-01-16 11:01 被阅读0次

从高地址向低地址排序:

栈区<运行时分配>:

特点:由编译器自动完成分配和释放,不需要程序员手动管理,主要存储了函数的参数和局部变量值
存放:局部变量和方法实参

堆区<运行时分配>:

特点:需要程序员手动开辟并管理内存.(OC有ARC,OC对那个同城不需要程序员考虑释放,但是CF类还有C类型的需要考虑)
存放:OC通过new alloc方法创建的对象;C通过malloc等

BSS段(全局区)(静态区)<编译时分配>

特点:程序运行过程内存的数据一直存在,程序结束后由系统释放
存放:未初始化的全局变量个静态变量

常量区(数据段)<编译时分配>:

特点:专门用于存放常量,程序结束后有系统释放
存放:以初始化的全局变量个静态变量

程序代码区<编译时分配>

特点:用于存放程序运行时的代码,代码会被编译成二进制存进内存的程序代码区
存放:程序的代码(被编译成二进制)

验证:

栈区: 内存地址是连续的 ,从高到底(int 4个字节,指针类型占8个字节)

        int a = 10;
        int b = 10;
        NSObject *obj = [NSObject new];
        NSLog(@"%p",&a);
        NSLog(@"%p",&b);
        NSLog(@"%p",&obj);

2019-01-16 10:44:13.108775+0800 performance01[16342:137560] 0x7ffee9e6401c
2019-01-16 10:44:13.110107+0800 performance01[16342:137560] 0x7ffee9e64018
2019-01-16 10:44:13.110197+0800 performance01[16342:137560] 0x7ffee9e64010

相关文章

  • 内存五大区

    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/nsbpdqtx.html