遞歸中函數內存分配問題
求解一個問題:老師說遞歸調用自身的時候是給函數分配的獨立內存單元,而不是調用的之前的函數,但是我在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-24
函數的代碼都是一樣的,所以地址一樣,在棧里的位置是不一樣的
2016-12-09
函數在代碼段里,一個函數一個入口地址
棧上的是調用的函數順序,以及參數和本地變量,代碼不在棧里。
你可以看看PE的格式,就知道了