_CrtMemDifference
Porovná dva stavy paměti a vrátí jejich rozdíly (pouze ladicí verze).
int _CrtMemDifference(
_CrtMemState *stateDiff,
const _CrtMemState *oldState,
const _CrtMemState *newState
);
Parametry
stateDiff
Ukazatel na strukturu _CrtMemState, která se používá k ukládání rozdílů mezi dvěma stavy paměti (vrácenými).oldState
Ukazatel na dřívější stav paměti (struktura _CrtMemState).newState
Ukazatel na pozdější stav paměti (struktura _CrtMemState).
Vrácená hodnota
Pokud jsou stavy paměti výrazně odlišné, _CrtMemDifference vrátí hodnotu TRUE.Jinak vrátí funkce hodnotu FALSE.
Poznámky
Funkce _CrtMemDifference porovná oldState a newState a uloží jejich rozdíl do proměnné stateDiff, kterou pak lze v aplikaci použít k detekci nevrácené paměti a dalších problémů s pamětí.Když _DEBUG není definován, jsou volání do _CrtMemDifference odstraněna během předběžného zpracování.
newState a oldState musí být platné ukazatele na strukturu _CrtMemState definovanou v souboru Crtdbg.h, který byl vyplněn _CrtMemCheckpoint před voláním _CrtMemDifference.stateDiff musí být ukazatel na dříve přidělenou instanci struktury _CrtMemState.Pokud stateDiff, newState, nebo oldState je NULL, je vyvolána obslužná rutina neplatného parametru, jak je popsáno v Ověření parametru.Pokud smí provádění pokračovat, errno, _doserrno, _sys_errlist, and _sys_nerr se nastaví na EINVAL a funkce vrátí FALSE.
_CrtMemDifference porovnává hodnoty polí _CrtMemState bloků v oldState s hodnotami v newState a uloží výsledek do stateDiff.Když se počet přidělených typů bloků nebo celkový počet přidělených bloků pro jednotlivé typy liší mezi dvěma stavy paměti, stavy se označují jako významně odlišné.Rozdíl mezi největším množstvím, které je kdy přiděleno současně oběma stavům a rozdíl mezi celkovým přidělením oběma stavům je také uložen v stateDiff.
Ve výchozím nastavení vnitřní bloky C run-time (_CRT_BLOCK) nejsou součástí operací stavu paměti.Funkci _CrtSetDbgFlag lze použít k zapnutí bitu _CRTDBG_CHECK_CRT_DF z _crtDbgFlag pro zahrnutí těchto bloků do detekce nevrácení paměti a dalších operací se stavem paměti.Uvolnění paměťových bloků (_FREE_BLOCK) nezpůsobí, že _CrtMemDifference vrátí hodnotu TRUE.
Další informace o funkcích stavu haldy a o struktuře _CrtMemState viz Funkc vykazování stavu haldy.Informace o způsobu přidělování, inicializace a správy paměťových bloků v ladicí verzi základní haldy viz Podrobnosti haldy ladění CRT.
Požadavky
Rutina |
Požadované záhlaví |
Volitelné záhlaví |
---|---|---|
_CrtMemDifference |
<crtdbg.h> |
<errno.h> |
Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.
Knihovny: Pouze verze ladění knihoven Funkce knihovny CRT.
Příklad
Viz téma crt_dbg1.
Ekvivalent v rozhraní .NET Framework
Nelze použít. Pokud chcete volat standardní funkci jazyka C, použijte PInvoke. Další informace naleznete v tématu Příklady vyvolání platformy.