共用方式為


堆積狀態報告函式

更新:2007 年 11 月

這個主題適用於:

版本

Visual Basic

C#

C++

Web Developer

Express 版

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

僅適用原生

標題不適用於

Standard 版

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

僅適用原生

標題不適用於

Pro/Team 版

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

僅適用原生

標題不適用於

表格圖例:

標題適用於

套用

標題不適用於

不套用

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

預設隱藏的命令。

許多函式會在指定的時間報告偵錯堆積的內容。

_CrtMemState

若要捕捉指定時間的堆積狀態之摘要快照,請使用定義在 CRTDBG.H 裡的 _CrtMemState 結構:

typedef struct _CrtMemState
{
    // Pointer to the most recently allocated block:
    struct _CrtMemBlockHeader * pBlockHeader;
    // A counter for each of the 5 types of block:
    size_t lCounts[_MAX_BLOCKS];
    // Total bytes allocated in each block type:
    size_t lSizes[_MAX_BLOCKS];
    // The most bytes allocated at a time up to now:
    size_t lHighWaterCount;
    // The total bytes allocated at present:
    size_t lTotalCount;
} _CrtMemState;

這個結構會儲存偵錯堆積的連結串列裡第一個 (最近配置) 區塊的指標。接著,它會在兩個陣列裡,記錄每一種記憶體區塊 (_NORMAL_BLOCK、_CLIENT_BLOCK、_FREE_BLOCK 等等) 類型在清單中的數目和每一種區塊類型裡配置的位元組數目。最後,它會記錄堆積裡配置的最高位元組數目來當做此時的總數,和目前配置的位元組數目。

其他 CRT 報告函式

下列函式報告堆積的狀態和內容,並且使用資訊來幫助偵測記憶體遺漏和其他問題。

函式

說明

_CrtMemCheckpoint

將堆積的快照儲存在應用程式所提供的 _CrtMemState 結構裡。

_CrtMemDifference

比較兩個記憶體狀態結構,將它們之間的差異儲存在第三個狀態結構,如果兩個狀態不同則傳回 TRUE。

_CrtMemDumpStatistics

傾印指定的 _CrtMemState 結構。結構可能包含指定時間裡偵錯堆積的狀態快照或者是兩個快照之間的差異。

_CrtMemDumpAllObjectsSince

傾印從堆積的指定快照使用後或從執行開始的所有配置物件之相關資訊。如果應用程式是使用 _CrtSetDumpClient 安裝,每一次傾印 _CLIENT_BLOCK 區塊時,它會呼叫應用程式所提供的攔截函式。

_CrtDumpMemoryLeaks

判斷自從程式執行開始時,是否有任何的記憶體遺漏發生,如果有的話,傾印所有配置的物件。如果應用程式是使用 _CrtSetDumpClient 安裝,每一次 _CrtDumpMemoryLeaks 傾印 _CLIENT_BLOCK 區塊時,它會呼叫應用程式所提供的攔截函式。

請參閱

其他資源

CRT 偵錯堆積