Objective-C 之 栈(stack)与堆(heap)

  相信iOS开发者都会常常听到"栈"与"堆"两个概念字,但是这两个概念到底是什么呢?下面来探讨一下:

  栈是内存中的一块区域,都有方法或者函数被执行时,栈就会为方法或者函数分配自己的一部分内存空间,这部分内存空间称为桢(frame)。当某个应用启动并运行main函数时,main函数的桢会被保留在栈的底部,如果main调用别的方法或者函数,那么这个方法或者函数的桢就会压入栈的顶部,即main函数桢的上方。

  堆也是内存中的一块区域,和栈是相对独立分开的。栈的顺序是后进先出保存桢的,而堆则是无序,如“堆”的顾名思义:一大堆,不按顺序。堆事通过指针保存对象在堆中的地址,当某个类使用alloc的时候,系统就会从堆中分配出一块内存空间。由于堆的空间是有限的,所以不能无上限创建对象,在ARC的帮助下,系统会帮助我们管理堆的空间,释放引用计数为0的对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容