堆積配置函式的偵錯版本

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 視為標準配置。

另請參閱

CRT 偵錯技術