MD d MT d 編譯選項的區別

2022-05-08 17:00:13 字數 1827 閱讀 1706

以vs2005為例,這樣子開啟:

1)         開啟專案的property pages對話方塊

2)         點選左側c/c++節

3)         點選code generation節

4)         右側第六行runtime library專案

編譯選項

包含靜態鏈結的lib

說明/md

_mt、_dll

msvcrt.lib

多執行緒、release、dll版本的執行時庫

/mdd

_debug、_mt、_dll

msvcrtd.lib

多執行緒、debug、dll版本的執行時庫

/mt_mt

libcmt.lib

多執行緒、release版本的執行時庫

/mtd

_debug、_mt

libcmtd.lib

多執行緒、debug版本的執行時庫

簡單的說:

(1)/md,表示執行時庫由作業系統提供乙個dll,程式裡不整合。

(2)/mt,表示執行時庫由程式整合。

(1)程式就不需要靜態鏈結執行時庫,可以減小軟體的大小;

(2)所有的模組都採用/md,使用的是同乙個堆,不存在a堆申請,b堆釋放的問題。

(1)有些系統可能沒有程式所需要版本的執行時庫,程式必須把執行時庫靜態鏈結上。

不同的模組各自有乙份c執行時庫**、或者根本沒有c執行時庫,導致了各個模組會有各自的堆。如果在a堆中申請空間,到b堆中釋放就會有崩潰,在模組a申請的空間,必須在模組a中釋放。

1、微軟關於mt、md等的詳細介紹

2、不要出現a模組申請,b模組釋放的情況

3、執行時庫有哪些版本

4、csdn上關於堆空間釋放的討論

5、不同模組不同的堆

以vs2005為例,這樣子開啟:

1)         開啟專案的property pages對話方塊

2)         點選左側c/c++節

3)         點選code generation節

4)         右側第六行runtime library專案

編譯選項

包含靜態鏈結的lib

說明/md

_mt、_dll

msvcrt.lib

多執行緒、release、dll版本的執行時庫

/mdd

_debug、_mt、_dll

msvcrtd.lib

多執行緒、debug、dll版本的執行時庫

/mt_mt

libcmt.lib

多執行緒、release版本的執行時庫

/mtd

_debug、_mt

libcmtd.lib

多執行緒、debug版本的執行時庫

簡單的說:

(1)/md,表示執行時庫由作業系統提供乙個dll,程式裡不整合。

(2)/mt,表示執行時庫由程式整合。

(1)程式就不需要靜態鏈結執行時庫,可以減小軟體的大小;

(2)所有的模組都採用/md,使用的是同乙個堆,不存在a堆申請,b堆釋放的問題。

(1)有些系統可能沒有程式所需要版本的執行時庫,程式必須把執行時庫靜態鏈結上。

不同的模組各自有乙份c執行時庫**、或者根本沒有c執行時庫,導致了各個模組會有各自的堆。如果在a堆中申請空間,到b堆中釋放就會有崩潰,在模組a申請的空間,必須在模組a中釋放。

1、微軟關於mt、md等的詳細介紹

2、不要出現a模組申請,b模組釋放的情況

3、執行時庫有哪些版本

4、csdn上關於堆空間釋放的討論

5、不同模組不同的堆

ML MD 等編譯選項區別

三 功能 執行時庫是程式在執行時所需要的庫檔案,通常以lib或dll形式提供 c執行時庫 庫檔案 single thread static link libc.lib debug single thread static link libcd.lib multithread static link ...

ML MD 等編譯選項區別

c執行時庫 庫檔案 single thread static link libc.lib debug single thread static link libcd.lib multithread static link libcmt.lib debug multithread static lin...

VC編譯選項

vc編譯選項 od 禁用優化 預設值 disable optimizations default ox 最大化選項。ogityb2 gs maximum opts.ogityb1 gs og 啟用全域性優化 enable global optimization oy 啟用框架指標省略 enable ...