首页 > 试题广场 >

请比较一下堆和栈的区别?

[问答题]
请比较一下堆和栈的区别?
  • 堆区和栈区的区别
    • 管理方式不同:
      • 堆由程序员管理
      • 栈是由操作系统自动管理
    • 碎片问题:
      • 堆:频繁的new/malloc会造成大量的内存碎片
      • 栈:先入后出的结构,进出一一对应,不会产生内存碎片。
    • 生长方向:
      • 堆向上,向高地址方向增长
      • 栈向下,向低地址方向生长
    • 分配方式:
      • 堆是动态分配,没有静态分配
      • 栈中有静态分配也有动态分配,静态分配是由编译器完成,动态分配由alloca函数分配,编译器自动释放,无需程序员实现。
    • 空间大小:
      • 堆是不连续的内存空间(用链表来存储空闲内存地址),空间大。
      • 栈和数据结构中的栈一样,是一块连续的内存空间,空间小
发表于 2020-03-11 15:12:54 回复(0)