[hellogcc] Re: [hellogcc] Re: [hellogcc] [投稿]小例子,函数声明的重要性

  • From: Mingjie Xing <mingjie.xing@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Mon, 10 Oct 2011 16:35:43 +0800

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源码,深入分析分析才对。

是的,需要具体分析。可惜我没有保留以前出错的例子,那个错误正是因为参数不一致造成的。现在是凭感觉写的这个示意例子。多谢指出,呵呵。

邢明杰

Other related posts: