_CrtMemDifference
比較兩個記憶體狀態,並傳回它們的差異 (偵錯版本)。
int _CrtMemDifference(
_CrtMemState *stateDiff,
const _CrtMemState *oldState,
const _CrtMemState *newState
);
參數
stateDiff
指標**_CrtMemState**結構,用來儲存 (傳回) 的兩個記憶體狀態之間的差異。oldState
較舊的記憶體內部狀態指標 (_CrtMemState結構)。newState
較新的記憶體內部狀態指標 (_CrtMemState結構)。
傳回值
如果記憶體告知有顯著的差異, _CrtMemDifference ,則傳回 TRUE。 否則,函數會傳回 FALSE。
備註
_CrtMemDifference函式比較oldState和newState ,並將存放他們的差異stateDiff,其中接著可由應用程式來偵測記憶體遺漏和其他的記憶體問題。 當_DEBUG尚未定義,會呼叫**_CrtMemDifference**在前置處理過程中移除。
newState與oldState能有效的指標, _CrtMemState ,已由填入的 Crtdbg.h 中所定義的結構_CrtMemCheckpoint呼叫之前**_CrtMemDifference**。 stateDiff必須是變數的指標,先前配置的執行個體的**_CrtMemState**結構。 如果stateDiff, newState,或oldState是NULL,不正確的參數處理常式會叫用,如所述參數驗證。 如果要繼續,請允許執行errno、 _doserrno、 _sys_errlist 和 _sys_nerr設定為 [ EINVAL ,則函數會傳回 FALSE。
_CrtMemDifference比較**_CrtMemState**欄位值的區塊oldState與newState ,並儲存,會產生stateDiff。 時的配置區塊型別,或是每種類型的已配置區塊總數案例的兩個記憶體狀態的差異,是指狀態有明顯的區別。 最大配置的量曾一次的兩個狀態以及之間差異的總配置為兩個狀態也會儲存在差異stateDiff。
根據預設,內部的 c 執行階段區塊 (_CRT_BLOCK) 不會列入記憶體狀態作業。 _CrtSetDbgFlag函式可用來點亮**_CRTDBG_CHECK_CRT_DF位元的_crtDbgFlag要併入遺漏偵測和其他記憶體狀態操作這些區塊。 釋放記憶體區塊 (_FREE_BLOCK**) 不會造成**_CrtMemDifference**傳回 TRUE。
如需有關堆積狀態函式和**_CrtMemState**結構,請參閱堆積狀態報告函式。 如需有關如何記憶體區塊會配置、 初始化,而且在基底堆積的偵錯版本管理的資訊,請參閱記憶體管理和偵錯堆積。
需求
常式 |
所需的標頭 |
選擇性標頭 |
---|---|---|
_CrtMemDifference |
<crtdbg.h> |
<errno.h> |
如需相容性資訊,請參閱相容性在簡介中。
定義函數庫: 的偵錯版本CRT 程式庫功能只。
範例
請參閱 crt_dbg1。
.NET Framework 對等用法
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱 平台叫用範例。