菜鸟问堆栈溢出问题
刚刚在网上看了段代码
#include <stdio.h>;
void overFlow ()
{
int a[] = { 0x78787868 };
*(a + 2) += 7;
}
int main ()
{
int aa = 3;
overFlow ();
aa = 4;
printf ("%d\n", aa);
}
结果是3,overflow()跳过了AA=4
我不明白 overflow() 为什么会跳过 aa=4
overflow()是个函数, a[]是她的局部变量,不是调用函数时候,都要保护现场,函数返回都要恢复现场吗?
难到这里不恢复现场?
高手指点一下,如果用汇编来说明更好,谢谢