Sdílet prostřednictvím


_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.

Viz také

Referenční dokumentace

Rutiny ladění

_crtDbgFlag