无牙仔
2016-03-21 21:06
求解一个问题:老师说递归调用自身的时候是给函数分配的独立内存单元,而不是调用的之前的函数,但是我在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
每次递归调用的时候,函数的地址都是一样的,这个怎么解释比较合理呢?谢谢。
函数的代码都是一样的,所以地址一样,在栈里的位置是不一样的
函数在代码段里,一个函数一个入口地址
栈上的是调用的函数顺序,以及参数和本地变量,代码不在栈里。
你可以看看PE的格式,就知道了
Linux C语言结构体
118294 学习 · 162 问题
相似问题