堆与栈的理解

1.内存管理方式
堆: 内存释放方式是由于程序员手工来操作的,比较繁琐,容易遗落,导致程序CRASH(OC对象存放在堆里面,所以ARC出现之前 都需要手工释放的 内存都需要手工去回收的)
栈:内存释放方式是由编译器管理自动释放的。
2.连续性和不连线性
堆:不连续的特点 造成大量的碎片,降低了程序的效率
栈区:连续的 ,特点后进先出,一个个排的,不会造成内存块从中间跳出
3.栈的效率比较高
4.堆只有动态分配,栈(都有)静态分配是由于编译器自动完成的 动态分配是由alloc函数实现(分配内存方式)

你可能感兴趣的:(堆与栈的理解)