首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >斯坦福大学的一位导师与GCC之间的冲突

斯坦福大学的一位导师与GCC之间的冲突
EN

Stack Overflow用户
提问于 2013-10-24 15:03:53
回答 1查看 4.1K关注 0票数 82

根据this电影(大约38分钟),如果我有两个具有相同局部变量的函数,它们将使用相同的空间。所以下面的程序,应该会打印5。使用gcc results -1218960859编译它。为什么?

程序:

代码语言:javascript
复制
#include <stdio.h>

void A()
{
    int a;
    printf("%i",a);
}

void B()
{
    int a;
    a = 5;
}

int main()
{
    B();
    A();
    return 0;
}

按照要求,下面是反汇编程序的输出:

代码语言:javascript
复制
0804840c <A>:
 804840c:   55                      push   ebp
 804840d:   89 e5                   mov    ebp,esp
 804840f:   83 ec 28                sub    esp,0x28
 8048412:   8b 45 f4                mov    eax,DWORD PTR [ebp-0xc]
 8048415:   89 44 24 04             mov    DWORD PTR [esp+0x4],eax
 8048419:   c7 04 24 e8 84 04 08    mov    DWORD PTR [esp],0x80484e8
 8048420:   e8 cb fe ff ff          call   80482f0 <printf@plt>
 8048425:   c9                      leave  
 8048426:   c3                      ret    

08048427 <B>:
 8048427:   55                      push   ebp
 8048428:   89 e5                   mov    ebp,esp
 804842a:   83 ec 10                sub    esp,0x10
 804842d:   c7 45 fc 05 00 00 00    mov    DWORD PTR [ebp-0x4],0x5
 8048434:   c9                      leave  
 8048435:   c3                      ret    

08048436 <main>:
 8048436:   55                      push   ebp
 8048437:   89 e5                   mov    ebp,esp
 8048439:   83 e4 f0                and    esp,0xfffffff0
 804843c:   e8 e6 ff ff ff          call   8048427 <B>
 8048441:   e8 c6 ff ff ff          call   804840c <A>
 8048446:   b8 00 00 00 00          mov    eax,0x0
 804844b:   c9                      leave  
 804844c:   c3                      ret    
 804844d:   66 90                   xchg   ax,ax
 804844f:   90                      nop
EN

回答 1

Stack Overflow用户

发布于 2013-10-24 15:06:13

在函数A中,变量a未初始化,打印它的值会导致未定义的行为。

在某些编译器中,A中的变量aB中的a位于同一地址,因此它可能会输出5,但同样,您不能依赖于未定义的行为。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19559133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档