On Mon, 2011-10-10 at 15:50 +0800, 乔崇 wrote: >奇怪,我的邮件发不到列表里面? 你发个测试邮件试试?也许是网络问题。 > 我觉得应该深入分析一下,真的危险吗? > 我觉得邢明杰的例子是安全。 > > 我觉得不安全代码对于mips如下: > int main(void) > { > f(1); > } > > int f(int a0,int a1,int a2,int a3,int a4) > { > a4=a0+a1+a2+a3+a4; > return a4; > } > > > gcc 可能会将a0,a1,a2,a3存到堆栈里面,但main函数给f预留的堆栈只有 > 一个参数大小,这样会盖掉main自己的堆栈里的东西。 > > 但我用gcc -O0编译并反汇编发现gcc分配的堆栈足够放下所有参数。 > > 因此是否危险还要看看gcc源码,深入分析分析才对。 是的,需要具体分析。可惜我没有保留以前出错的例子,那个错误正是因为参数不一致造成的。现在是凭感觉写的这个示意例子。多谢指出,呵呵。 邢明杰