不会被清零。
汇编语言中,出栈是通过POP指令来实现的,首先看一下Intel手册中对于pop指令的描述:
大致意思如下:Pop指令从栈顶加载值到目标操作数指定的位置,然后增加栈顶指针。目标操作数可以是一个通用寄存器,内存位置或者段寄存器。
可以看到,手册中并没有提到出栈后Pop要清空原有位置的值。因为这是不必要的,正常使用栈的话,出栈后那个位置的数值对栈没有影响,在栈增长后,那个位置可能会被新的值覆盖掉(即通过Push压栈),所以没有必要清空它。而且,处理器和指令集设计的时候,必然会十分注重效率,不会做多余的事情,清不清零对栈的使用完全没有影响,所以设计师当然也不会让pop做这件事。