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

2021-06-18 15:30:03 字數 547 閱讀 6551

靜態鏈結是指要把呼叫的函式或者過程直接鏈結到可執行檔案中,成為可執行檔案的一部分。

換句話說,函式和過程的**就在程式的exe

檔案中,該檔案包含了執行時所需的全部**。

靜態鏈結的缺點是當多個程式都呼叫相同函式時,記憶體中就會存在這個函式的多個拷貝,

這樣就了浪費了記憶體資源。

動態鏈結是相對於靜態鏈結而言的,動態鏈結所呼叫的函式**並沒有拷貝到應用程式的可執行檔案中去,而是僅僅在其中加入了所呼叫函式的描述資訊(往往是一些重定位資訊)。

僅當應用程式被裝入記憶體開始執行時,在作業系統的管理下,才在應用程式與相對應的動態鏈結庫之間建立鏈結關係。當要執行所呼叫dll

中的函式時,

根據鏈結產生的重定位資訊,

作業系統才轉去執行dll

中的相應函式**。

靜態鏈結的執行程式能夠在其他同類作業系統的機器上直接執行,而動態鏈結的執行程式則不一定可以,除非把該exe

檔案與dll

檔案一併拷貝過去,或者對方機器上也有所需的相同版本的

dll檔案,否則是不能保證正常執行的

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

動態鏈結庫 靜態庫 import庫區別 動態鏈結庫 dynamic linked library windows為應用程式提供了豐富的函式呼叫,這些函式呼叫都包含在動態鏈結庫中。其中有3個最重要的dll,kernel32.dll,它包含用於管理記憶體 程序和執行緒的各個函式 user32.dll,它...

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

windows為應用程式提供了豐富的函式呼叫,這些函式呼叫都包含在動態鏈結庫中。其中有3個最重要的dll,kernel32.dll,它包含用於管理記憶體 程序和執行緒的各個函式 user32.dll,它包含用於執行使用者介面任務 如視窗的建立和訊息的傳送 的各個函式 gdi32.dll,它包含用於畫...

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

動態鏈結庫 靜態庫 import庫區別 動態鏈結庫 dynamic linked library windows為應用程式提供了豐富的函式呼叫,這些函式呼叫都包含在動態鏈結庫中。其中有3個最重要的dll,kernel32.dll,它包含用於管理記憶體 程序和執行緒的各個函式 user32.dll,它...