问答详情
源自:7-2 Linux C递归函数之递归原理

递归中函数内存分配问题

求解一个问题:老师说递归调用自身的时候是给函数分配的独立内存单元,而不是调用的之前的函数,但是我在gdb查看函数地址却发现如下现象:

#0  fun (a=1) at main.c:10

#1  0x0000000100000eb7 in fun (a=2) at main.c:8

#2  0x0000000100000eb7 in fun (a=3) at main.c:8

#3  0x0000000100000eb7 in fun (a=4) at main.c:8

#4  0x0000000100000eb7 in fun (a=5) at main.c:8

#5  0x0000000100000f1b in main () at main.c:18

每次递归调用的时候,函数的地址都是一样的,这个怎么解释比较合理呢?谢谢。

提问者:无牙仔 2016-03-21 21:06

个回答

  • NBAFifa
    2016-03-24 18:02:07
    已采纳

    函数的代码都是一样的,所以地址一样,在栈里的位置是不一样的

  • NBAFifa
    2016-12-09 11:45:32

    函数在代码段里,一个函数一个入口地址

    栈上的是调用的函数顺序,以及参数和本地变量,代码不在栈里。

    你可以看看PE的格式,就知道了