遞歸中函數(shù)內(nèi)存分配問題
求解一個問題:老師說遞歸調(diào)用自身的時候是給函數(shù)分配的獨(dú)立內(nèi)存單元,而不是調(diào)用的之前的函數(shù),但是我在gdb查看函數(shù)地址卻發(fā)現(xiàn)如下現(xiàn)象:
#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
每次遞歸調(diào)用的時候,函數(shù)的地址都是一樣的,這個怎么解釋比較合理呢?謝謝。
2016-03-24
函數(shù)的代碼都是一樣的,所以地址一樣,在棧里的位置是不一樣的
2016-12-09
函數(shù)在代碼段里,一個函數(shù)一個入口地址
棧上的是調(diào)用的函數(shù)順序,以及參數(shù)和本地變量,代碼不在棧里。
你可以看看PE的格式,就知道了