靜態鏈接與動態鏈接的區別

靜態鏈接是指要把調用的函數或者過程直接鏈接到可執行文件中,成爲可執行文件的一部分。

換句話說,函數和過程的代碼就在程序的exe文件中,該文件包含了運行時所需的全部代碼。

靜態鏈接的缺點是當多個程序都調用相同函數時,內存中就會存在這個函數的多個拷貝,

這樣就了浪費了內存資源。

動態鏈接是相對於靜態鏈接而言的,動態鏈接所調用的函數代碼並沒有拷貝到應用程序的可執行文件中去,而是僅僅在其中加入了所調用函數的描述信息(往往是一些重定位信息)。

僅當應用程序被裝入內存開始運行時,在操作系統的管理下,纔在應用程序與相對應的動態鏈接庫之間建立鏈接關係。當要執行所調用dll中的函數時,根據鏈接產生的重定位信息,操作系統才轉去執行dll中的相應函數代碼。

靜態鏈接的執行程序能夠在其他同類操作系統的機器上直接運行,而動態鏈接的執行程序則不一定可以,除非把該exe文件與dll文件一併拷貝過去,或者對方機器上也有所需的相同版本的dll文件,否則是不能保證正常運行的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章