2014-07-21 22 views
0

我已經閱讀了很多關於此主題的資源,但我仍然堅持一些概念。動態鏈接v/s動態加載

- 我明白,在動態鏈接,鏈接被推遲到運行時,即我們不知道在編譯時將庫代碼相對於主源放置在哪裏。這有助於實現共享庫概念,即該過程可以使用某些其他進程使用的庫代碼。

- 我不明白的是動態加載中發生了什麼。這個鏈接是靜態完成的嗎?如果它是靜態完成的,那麼延遲加載直到運行時間的目的是什麼?這是自動還是程序員需要干預(進行一些調用來加載庫)?

謝謝!

回答

3

這些是2個不同的概念。我不會詳細說明動態鏈接,你的描述是相當充分的。

動態加載意味着某些部分的可執行代碼不是在程序啓動時加載到內存中,而是稍後在執行過程中加載,通常是根據需要加載。該代碼駐留在某個外部庫中。

原因動態加載可能是不同的,他們通常會涉及到資源的利用率 - 例如,最大限度地減少執行過程中的內存使用,最大限度地減少在程序啓動時加載時間等

動態加載ISN的用法」 t由操作系統控制,而由程序員通過操作系統提供的功能控制。代碼駐留在外部庫中,主程序根據程序的本機邏輯在某個階段接口並加載它。

+0

thanx爲答案。在動態加載的情況下鏈接靜態也是如此? – ishan3243

+0

@ ishan3243不,它是動態加載時的動態鏈接。否則,代碼駐留在完全由OS加載到內存的相同可執行文件中。你可以看*動態鏈接*作爲傳達*動態加載*的手段。 – SomeWittyUsername

+0

根據此鏈接http://www.quora.com/Systems-Programming/What-is-the-exact-difference-between-Dynamic-loading-and-dynamic-linking ...該人描述了四種組合鏈接和加載.....你在談論哪一個?鏈接是否正確描述了它? – ishan3243