21,489
社区成员




写了一段汇编demo代码,代码如下
可以看到,我定义了一个连续的16个字节的栈段,这16个字节我设置成了全0数据
程序刚刚载入的时候。栈段的数据是这样的,确实是全0数据
再执行一会,这个栈段已经不全为0了
把push全部执行完,可以看到,前6个字节的数据是对的,确实是push进来的数值,但是后面的10个字节数据并不是全是0
这是为啥,有木有帮忙解答一下
debug单步的时候也是要使用程序栈空间的
使用了堆栈,无论是自己的 push 或 call 或其它中断,再还原时,是不清理或还原堆栈空间的内容的,只还原堆栈指针(即堆栈可用空间的位置),所以,那些应该是刚使用过堆栈的数据遗留;当然,这些是限于小于堆栈指针的那些部分,大于等于堆栈指针的部分是不应该被改写的,否则就应是溢出了,可能会引发不测后果。