我的问题是 MSVS 2010 C++ 编译器在从另一个 dll 在运行时解析的函数调用(GetProcAddress+GetModuleHandle)返回后以某种方式生成代码,然后编译器尝试以这种方式对齐堆栈:
CALL DWORD PTR DS:[2000367C] ; apiresolvedinruntime.dll
ADD ESP,12 ; <- this is the stack alignment
这当然会覆盖返回地址并且我的程序崩溃,有人可以解释一下为什么编译器在不应该这样做时对齐堆栈吗?