读书人

C语言中return疑问解决方法

发布时间: 2012-04-02 19:58:59 作者: rapoo

C语言中return疑问
在c语言开发中,常常遇到函数返回值问题,我在不少的地方看人用过如下的编程方式
int Function()
{
int n = 10;
return n;
}

void main()
{
int i = Function();
}
这种编程方式,我认为有点问题,当Function函数结束后,其占用的栈空间已被销毁,但是我调试时发现还能返回正确的值,这种写法到底有没有问题,是不是存在隐患。

[解决办法]

C/C++ code
1:    int Function()2:    {//00401000 55                   push        ebp//00401001 8B EC                mov         ebp,esp//00401003 83 EC 44             sub         esp,44h//00401006 53                   push        ebx//00401007 56                   push        esi//00401008 57                   push        edi3:      int n = 10;//00401009 C7 45 FC 0A 00 00 00 mov         dword ptr [ebp-4],0Ah4:      return n;//00401010 8B 45 FC             mov         eax,dword ptr [ebp-4]5:    }//00401013 5F                   pop         edi//00401014 5E                   pop         esi//00401015 5B                   pop         ebx//00401016 8B E5                mov         esp,ebp//00401018 5D                   pop         ebp//00401019 C3                   ret6:7:    void main()8:    {//00401020 55                   push        ebp//00401021 8B EC                mov         ebp,esp//00401023 83 EC 44             sub         esp,44h//00401026 53                   push        ebx//00401027 56                   push        esi//00401028 57                   push        edi9:      int i = Function();//00401029 E8 D2 FF FF FF       call        Function (00401000)//0040102E 89 45 FC             mov         dword ptr [ebp-4],eax10:   }//00401031 5F                   pop         edi//00401032 5E                   pop         esi//00401033 5B                   pop         ebx//00401034 8B E5                mov         esp,ebp//00401036 5D                   pop         ebp//00401037 C3                   ret 

读书人网 >C语言

热点推荐