Re: [問題] 函式指標的位址
※ 引述《johnhmj (耗呆小綿羊)》之銘言:
: 我有一個函式指標的問題。
: 函式指標指向一個函式,
: 指標所指的位址為何會與函式本體的位址不一樣?
: IDE:Visual Studio VC++
: 程式截圖如下所示……
: 圖片在此:http://0rz.tw/xQ7Jm
我的猜想啦:
VC 會把所有 function call 的位址記在這一塊的某處
然後到時呼叫時跳過去的是那個某處的位址
(那個"某處"就是原推文說的一堆 jmp 的地方)
這樣好處在如果函式內容有變動時
不必重新生成所有呼叫位址
只需改動那個"某處"裡紀錄位址的值即可
這似乎是用來實作出所謂的 incremental link 的一部份...
(也就是當專案重新連結時
沒動到的函式呼叫就可以不用改它
即使那個函式因為擺在附近的函式內容變多或變少而移位了也一樣)
也因此 function pointer 才會被實作成指向那個"某處"的位址吧
(這樣一來連賦給 function pointer 的常數值都可以不用改)
--
"LPH" is for "Let Program Heal us"....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.254.23.234
討論串 (同標題文章)