共用方式為


HOW TO:使用偵錯堆積

更新:2007 年 11 月

這個主題適用於:

版本

Visual Basic

C#

C++

Web Developer

Express 版

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

僅適用原生

標題不適用於

Standard 版

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

僅適用原生

標題不適用於

Pro/Team 版

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

僅適用原生

標題不適用於

表格圖例:

標題適用於

套用

標題不適用於

不套用

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

預設隱藏的命令。

所有堆積函式的呼叫,例如 malloc、free、callocrealloc、new 和 delete 都會解析成操作於偵錯堆積裡的這些函式之偵錯版本。當您釋放記憶體區塊時,偵錯堆積會自動檢查配置區域每端的緩衝區之完整性,如果發生覆寫發便會發出錯誤報告。

若要使用偵錯堆積

  • 以 C 執行階段程式庫的偵錯版本連結您應用程式的偵錯組建。

若要變更一個或多個 _crtDbgFlag 位元欄位並建立旗標的新狀態

  1. 使用設為 _CRTDBG_REPORT_FLAG (為取得目前的 _crtDbgFlag 狀態) 的 newFlag 參數來呼叫 _CrtSetDbgFlag,且將傳回值儲存在暫存變數中。

  2. 使用 OR (位元 (Bitwise) | 符號) 暫存變數和對應的位元遮罩 (以資訊清單常數 (Manifest Constant) 表示於應用程式程式碼) 來開啟任何位元。

  3. 使用 AND (位元 & 符號) 變數和適當位元遮罩的 NOT (位元 ~ 符號) 來關閉其他位元。

  4. 使用設成儲存於暫存變數值的 newFlag 參數呼叫 _CrtSetDbgFlag,以便建立 _crtDbgFlag 的新狀態。

範例

例如,下列程式碼開啟自動遺漏偵測並且關閉類型 _CRT_BLOCK 的區塊檢查:

// Get current flag
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );

// Turn on leak-checking bit.
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;

// Turn off CRT block checking bit.
tmpFlag &= ~_CRTDBG_CHECK_CRT_DF;

// Set flag to the new value.
_CrtSetDbgFlag( tmpFlag );

請參閱

其他資源

CRT 偵錯堆積