iOS面试汇总

iOS内存管理(6)-堆栈的理解和区别

2018-07-09  本文已影响33人  奔跑吧小蚂蚁

什么行为会增加APP的内存占用

内存管理范围

堆栈的区别:

1、堆空间的内存是动态分配的、一般存放对象、并且需要手动释放内存。

2、栈空间的内存是由系统自动分配、一般存放局部变量等、不需要手动管理内存。

引入堆和栈的概念

因为:Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,就是release
OC对象存放于堆里面(堆内存要程序员手动回收)
非OC对象一般放在栈里面(栈内存会被系统自动回收)
堆里面的内存是动态分配的,所以也就需要程序员手动的去添加内存、回收内存

从管理方式来讲:

从申请大小大小方面讲:

从数据存储方面来讲:

堆栈的区别

栈是吃了吐(LIFO先进后出)
堆是吃了拉(FIFO先进先出):

总感觉讲解的不够深入,也希望大神给予深入的方向。

上一篇下一篇

猜你喜欢

热点阅读