共用方式為


堆積配置函式的偵錯版本

更新:2007 年 11 月

這個主題適用於:

版本

Visual Basic

C#

C++

Web Developer

Express 版

標題不適用於 標題不適用於

僅適用原生

標題不適用於

Standard 版

標題不適用於 標題不適用於

僅適用原生

標題不適用於

Pro/Team 版

標題不適用於 標題不適用於

僅適用原生

標題不適用於

表格圖例:

標題適用於

套用

標題不適用於

不套用

預設會套用主題但隱藏命令

預設隱藏的命令。

C 執行階段程式庫包含堆積配置 (Heap Allocation) 函式的特殊偵錯版本。這些函式的名稱與發行版本相同,再加上「_dbg」。本主題以 malloc_malloc_dbg 為例,說明 CRT 函式發行版本和 _dbg 版本之間的差異。

完成 _DEBUG 定義時,CRT 會將所有的 malloc 呼叫對應到 _malloc_dbg。因此,您在偵錯時不需要改用 _malloc_dbg 取代 malloc,來重寫程式碼取得這些功能。

然而,您可能要明確地呼叫 _malloc_dbg。明確地呼叫 _malloc_dbg 會多出下列一些優點:

  • 追蹤 _CLIENT_BLOCK 類型配置。

  • 儲存發生配置要求位置的原始程式檔和行號。

如果您不要將 malloc 呼叫轉換成 _malloc_dbg,您可以定義 _CRTDBG_MAP_ALLOC 來取得原始程式檔資訊,它會造成前置處理器直接將 malloc 的所有呼叫對應至 _malloc_dbg,而不用依賴 malloc 的包裝函式。

若要追蹤用戶端區塊裡不同類型的配置,您必須直接呼叫 _malloc_dbg 並且將 blockType 參數設為 _CLIENT_BLOCK

如果沒有定義 _DEBUG,malloc 呼叫會受到干擾,即 _malloc_dbg 呼叫會解析成 malloc_CRTDBG_MAP_ALLOC 定義會受到忽略,而無法提供有關配置要求的原始程式檔資訊。因為 malloc 沒有區塊類型參數,_CLIENT_BLOCK 類型的要求會被當成標準配置處理。

請參閱

其他資源

CRT 偵錯技術