iOS 堆和栈

在具体的C/C++编程框架中,这两个概念并不是并行的。栈是机器系统提供的数据结构,而堆则是C/C++函数库提供的

堆: 先进先出

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

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


栈:先进后出

由系统编译器自动管理,不需要程序员手动管理

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

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

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


Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,就是release

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

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

你可能感兴趣的:(iOS 堆和栈)