iOS 内存五大区

从高地址向低地址排序:

栈区<运行时分配>:

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

堆区<运行时分配>:

特点:需要程序员手动开辟并管理内存.(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

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

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 5,470评论 1 22
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 5,068评论 0 13
  • 技 术 文 章 / 超 人 2019-03-20 补充@ dynamic与@ synthesize内容 个人觉得要...
    树下敲代码的超人阅读 19,207评论 24 120
  • 我的优点: 1.我会特别的勤快又爱干净,总是把家里收拾得干干净净的,井井有条的,整整齐齐的,在这方面是我的强项,爱...
    代灿红_六中阅读 188评论 0 0