第1个回答 2011-12-16
堆和栈是两种不同的数据结构。
栈是一种后进先出的数据结构,即先进栈的数据反而要后出来,后进栈的数据反而可以先出来。
堆是一种优先队列,它满足一定的性质(即堆的性质)。
而在操作系统内存方面的堆和栈,也是不同的。内存栈是用来存放局部动态变量的。而内存堆是由程序员自己分配释放的内存空间。
第2个回答 2011-12-16
额...按我理解的... 一般来说在32位操作系统,可供程序员使用虚拟内存总共大概8个G
堆一般是程序员分配释放,如果不释放,程序运行完自动释放.. 用malloc申请的内存在堆中
栈..编译器自定分配,函数应该就是在栈执行,函数里的变量和局部变量也应该是在栈中
我感觉栈也就2多G大吧...常量应该按地址位置应该在堆下面,
我的理解是 栈内执行效率高,适合执行类似函数那样反复执行的代码...
第3个回答 2011-12-16
栈是一种特殊的线性表,即里面的元素是一对一的关系。栈只能在线性表的一端进行插入和删除元素,这端称之为栈顶,另外一端为栈底。所以栈具有先进后出的特点。
至于栈的应用比较广泛,计算表达式,实现递归函数,判断括号匹配等应用。