栈是系统提供的功能,优点是快速高效,缺点是有限制,数据不灵活;堆是函数库提供的功能,特点是灵活方便,数据适用面广,但是效率较低。
栈是系统数据结构,对于进程或线程是唯一的;堆是函数库内部数据结构,不一定唯一,不同堆分配的内存无法相互操作。
占空间分静态分配和动态分配两种,其中,静态分配是编译器完成的,比如自动变量的分配;而动态分配由alloca函数完成的,栈的分配无需释放,但是为了可移植的程序起见,栈的动态分配操作是不鼓励的。堆空间总是动态分配。
栈是系统提供的功能,优点是快速高效,缺点是有限制,数据不灵活;堆是函数库提供的功能,特点是灵活方便,数据适用面广,但是效率较低。
栈是系统数据结构,对于进程或线程是唯一的;堆是函数库内部数据结构,不一定唯一,不同堆分配的内存无法相互操作。
占空间分静态分配和动态分配两种,其中,静态分配是编译器完成的,比如自动变量的分配;而动态分配由alloca函数完成的,栈的分配无需释放,但是为了可移植的程序起见,栈的动态分配操作是不鼓励的。堆空间总是动态分配。