遞歸中函數(shù)內(nèi)存分配問(wèn)題
求解一個(gè)問(wèn)題:老師說(shuō)遞歸調(diào)用自身的時(shí)候是給函數(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í)候,函數(shù)的地址都是一樣的,這個(gè)怎么解釋比較合理呢?謝謝。
2016-03-24
函數(shù)的代碼都是一樣的,所以地址一樣,在棧里的位置是不一樣的
2016-12-09
函數(shù)在代碼段里,一個(gè)函數(shù)一個(gè)入口地址
棧上的是調(diào)用的函數(shù)順序,以及參數(shù)和本地變量,代碼不在棧里。
你可以看看PE的格式,就知道了