堆積配置函式的偵錯版本
C 執行時間 (CRT) 連結庫包含堆積配置函式的特殊偵錯版本。 這些函式的名稱與已附加的 Release 版本 _dbg
相同。 本文說明使用 和 作為範例,CRT 函式的版本與_dbg
版本malloc
_malloc_dbg
之間的差異。
偵錯組建中的行為
定義時 _DEBUG
,CRT 會將所有 malloc
呼叫對應至 _malloc_dbg
。 因此,您不需要使用 重寫程序代碼 _malloc_dbg
,而不是 malloc
在偵錯時獲得好處。
然而,您可能要明確地呼叫 _malloc_dbg
。 明確地呼叫 _malloc_dbg
會多出下列一些優點:
追蹤
_CLIENT_BLOCK
類型配置。儲存發生配置要求位置的原始程式檔和行號。
如果您不想要將呼叫轉換成 malloc
,您可以定義 _CRTDBG_MAP_ALLOC
來取得來源檔案資訊,這會導致預處理器將所有呼叫直接對應至 ,malloc
_malloc_dbg
而不是依賴周圍的malloc
包裝函_malloc_dbg
式。
若要追蹤用戶端區塊裡不同類型的配置,您必須直接呼叫 _malloc_dbg
並且將 blockType
參數設為 _CLIENT_BLOCK
。
非偵錯組建中的行為
未定義時 _DEBUG
,不會干擾對 malloc
的呼叫、對的呼叫 _malloc_dbg
會解析為 malloc
、忽略的定義 _CRTDBG_MAP_ALLOC
,而且不會提供與配置要求相關的原始程式檔資訊。 因為 malloc
沒有區塊類型參數,因此會將類型的要求 _CLIENT_BLOCK
視為標準配置。