简述堆和栈的区别?

匿名网友 匿名网友 发布于: 2015-12-28 00:00:00
阅读 107 收藏 0 点赞 0 评论 0

栈是系统提供的功能,优点是快速高效,缺点是有限制,数据不灵活;堆是函数库提供的功能,特点是灵活方便,数据适用面广,但是效率较低。

栈是系统数据结构,对于进程或线程是唯一的;堆是函数库内部数据结构,不一定唯一,不同堆分配的内存无法相互操作。

占空间分静态分配和动态分配两种,其中,静态分配是编译器完成的,比如自动变量的分配;而动态分配由alloca函数完成的,栈的分配无需释放,但是为了可移植的程序起见,栈的动态分配操作是不鼓励的。堆空间总是动态分配。

评论列表
文章目录