iOS 内存管理 | 栈区和堆区的区别

90 阅读1分钟

一句话回答

区别:

堆Heap:用于存放对象,还有管理 malloc 出来的内存空间

栈Stack:则是用于存放局部变量和函数参数

各自由谁进行管理?

堆区由开发者手动分配和释放

栈区则是由系统自动分配和释放

读取速度

那当然是栈区的读得快啦,因为栈区对象可以直接通过寄存器访问到数据,不像堆区的对象,得先拿到栈区的内存指针,然后才能访问实际的内容。

App 运行时,堆栈如何生长?

栈区往下生长,堆区在中间,往上生长

还有哪些分区?

  1. 全局区:存放静态变量、全局变量
  2. 常量区:编译时分配的内存空间,比如字符串常量
  3. 代码区:编译好的二进制代码
image.png