Re: [問題] 函式指標的位址

看板C_and_CPP作者 ((short)(-15074))時間16年前 (2010/02/09 21:04), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1BSLrwnk (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BSLrwnk (C_and_CPP)