iOS 堆和栈的区别

OC对象存放于堆里面(堆内存要程序员手动回收)

非OC对象一般放在栈里面(栈内存会被系统自动回收)

堆里面的内存是动态分配的,所以也就需要程序员手动的去添加内存、回收内存

按管理方式分

对于栈来讲,是由系统编译器自动管理,不需要程序员手动管理

对于堆来讲,释放工作由程序员手动管理,不及时回收容易产生内存泄露

按分配方式分

堆是动态分配和回收内存的,没有静态分配的堆

栈有两种分配方式:静态分配和动态分配

静态分配是系统编译器完成的,比如局部变量的分配

动态分配是有alloc函数进行分配的,但是栈的动态分配和堆是不同的,它的动态分配也由系统编译器进行释放,不需要程序员手动管理

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

推荐阅读更多精彩内容