Share via


堆積配置函式的偵錯版本

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 偵錯技術