1. 程式人生 > >靜態連結與動態連結的區別

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

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

換句話說,函式和過程的程式碼就在程式的exe檔案中,該檔案包含了執行時所需的全部程式碼。

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

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

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

僅當應用程式被裝入記憶體開始執行時,在作業系統的管理下,才在應用程式與相對應的動態連結庫之間建立連結關係。當要執行所呼叫dll中的函式時,根據連結產生的重定位資訊,

作業系統才轉去執行dll中的相應函式程式碼。

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