注册 登录
编程论坛 汇编论坛

关于堆栈的问题?

ch_ch 发布于 2005-10-03 14:29, 1051 次点击
1.PE文件说明里(PE头偏移60H)说的线程初始堆栈是不是程序中用于分配局部变量,参数传递用的栈呢?说保留大小是0x100000,系统会在程序运行时修改它的大小吗?如果这个大小是固定的即便是退出较好的递归调用不是也很容易就溢出么,才1M啊!2G的地址空间就只能让堆用?
2.它和进程的缺省堆(这里又是"堆"了,是我在一本书上讲WINDOWS内存管理时看到的)是一会事么,说这个堆是WIN32函数使用的,缺省值也是1M,把我搞糊涂了.
3.书上多用"堆栈"这个词,那到底是指堆呢还是栈呢?我感觉堆是可以随机分配的,哪里有地方就分配到哪里,栈不是应该保持地址连续么,要不然PUSH,POP能找到正确的地址么?程序的堆栈该怎么理解呢?

请帮帮我,谢谢!
4 回复
#2
xieheping2005-10-20 22:03
堆栈是一个后进先出FILO(或说先进后出FILO)的主存区域,位于堆栈段中;SS段寄存器记录其段地址
堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定
堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSHPOP
#3
简单的爱2005-10-24 05:48
去看堆栈段
#4
wang8y8y2005-10-27 23:08
用椎栈时,出栈时,sp的指针改变,椎栈内的内容为什么会被清除呢.
#5
doodd8882005-11-08 12:44

小弟,今天也刚看到push,pop,

1