《iOS面试题整理》- 堆和栈的区别

内存分配方式

  1. 栈是高地址向低地址扩展, 是一块连续的内存区域、堆是地地址向高地址分配, 不连续的内存区域
  2. 栈是系统自动分配空间, 堆需要手动分配
  3. 栈上的数据在函数结束后自动释放, 堆上的数据如果不释放, 一直能访问, 可能会造成内存泄漏
  4. 栈是先进后出, 不会有内存碎片问题, 堆如果频繁的new/delete 会造成内存空间不连续, 造成大量碎片

你可能感兴趣的:(《iOS面试题整理》- 堆和栈的区别)