iOS内存分配之堆和栈的区别
来源:互联网 发布:西南交通大学网络教学 编辑:程序博客网 时间:2024/05/29 10:53
一、内存分区?
ios内存分为栈区、堆区、全局区、常量区、代码区。
二、各分区介绍
栈区:是编译器自动分配和释放的。一般存放局部变量、函数参数值得。栈---系统的数据结构,先进先出。
分配方式:分为静态分配和动态分配
静态分配:编译器完成,局部变量的分批额。
动态分配,alloc函数完成。
堆区:是程序员分配和释放。顺序随意,有点灵活方便。
分配方式:只有动态分配的堆,
全局区:static全局变量和静态变量。初始化的全局变量和静态变量,
全局区分为:未初始化的全局区,int a;未初始化,int a = 10;已经初始化。
常量区,存放常量字符串,程序结束由程序执行。
代码区:存放二进制代码。
三、栈和堆的区别
管理方式:
1.栈区是由编译器自动分配和释放。
2.堆区是程序员分配和释放。
申请效率:
1.栈区,由系统自动分配,速度较快,但程序员无法控制。
2.堆区,由alloc分配内存,一般慢,产生内存碎片。
分配方式
1.栈区:2种分配方式,静态分配和动态分配,静态分配编译器完成,:局部变量,动态分配是alloc函数进行分配,不需要程序员实现。
2.堆区:没有静态分配的堆,只有动态分配。
申请大小:
1.栈区:是向低地址扩展的数据结构,是一块连续的内存区域,栈顶地址和栈的容量是由系统分配,大小为2M,如果申请的空间大于栈剩余空间,将提示栈溢出。
2.堆区:是向高地址扩展的数据结构,是不连续的内存区域,大小受计算机中有效的虚拟内存,比较灵活。
- iOS内存分配之堆和栈的区别
- 程序的内存分配之堆和栈的区别
- 程序的内存分配之堆和栈的区别
- 内存分配之堆和栈的区别
- 内存分配-堆和栈的区别
- 内存分配栈和堆的区别
- 内存的堆分配和栈分配
- 内存的堆分配和栈分配
- 内存的堆分配和栈分配
- 内存的堆分配和栈分配
- 内存的堆分配和栈分配
- 堆和栈的区别1----程序的内存分配
- 【转】程序的内存分配之堆和栈的区别
- iOS 内存分配(栈和堆)
- C++内存分配问题-----------堆和栈的区别
- 内存分配——堆和栈的区别
- 内存分配——堆和栈的区别
- 内存分配中堆和栈的区别
- ACM 数论 Maximum GCD
- 【Modbus】 RTU CRC校验码计算方法
- 关于Ioc中的 注入 与 装配
- 微信小程序之为保障帐号安全不可使用此域名地址
- 8月8日云栖精选夜读:他的前半生是厨神_45岁却决定加入阿里巴巴
- iOS内存分配之堆和栈的区别
- dhcpd.conf配置
- 资讯精选 | 中美人工智能发展战略的异同检视:差距何在?如何超越?
- Unity3D 官方文档 UGUI总览 可互动组件的介绍
- 取消滚轮的按键功能
- 首次披露!拍立淘技术框架及核心算法_日均UV超千万
- 记一次异常org.apache.commons.lang.exception.NestableRuntimeException
- Android Butterknife 8.4.0 ~~~View注入框架
- Ant是什么?