Sdílet prostřednictvím


_CrtMemDifference

Porovná dva stavy paměti a vrátí jejich rozdíly (pouze ladicí verze).

Syntaxe

int _CrtMemDifference(
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState
);

Parametry

stateDiff
Ukazatel na _CrtMemState strukturu, která se používá k ukládání rozdílů mezi dvěma stavy paměti (vráceny).

oldState
Ukazatel na dřívější stav paměti (_CrtMemState struktura).

newState
Ukazatel na pozdější stav paměti (_CrtMemState struktura).

Vrácená hodnota

Pokud je rozdíl ve stavech paměti významný, _CrtMemDifference vrátí hodnotu TRUE. V opačném případě funkce vrátí FALSEhodnotu .

Poznámky

Funkce _CrtMemDifference porovnává a newState ukládá jejich rozdílyoldState, stateDiffkteré pak může aplikace použít k detekci nevracení paměti a dalších problémů s pamětí. Pokud _DEBUG není definováno, volání, která _CrtMemDifference se mají odebrat během předběžného zpracování.

newState a oldState každý z nich musí být platným ukazatelem na strukturu definovanou _CrtMemState v crtdbg.h, která _CrtMemCheckpoint byla vyplněna před voláním _CrtMemDifference. stateDiff musí být ukazatel na dříve přidělenou instanci _CrtMemState struktury. Je-li stateDiffvyvolána NULLnewStateoldState neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Je-li spuštění povoleno pokračovat, , , _sys_errlist_doserrnoa _sys_nerrje nastavena na EINVAL a funkce vrátí FALSE.errno

_CrtMemDifference_CrtMemState porovná hodnoty polí bloků s oldState hodnotami v blocích newState a uloží výsledek do stateDiff. Pokud se počet přidělených typů bloků nebo celkový počet přidělených bloků pro každý typ liší mezi těmito dvěma stavy paměti, je rozdíl ve stavech považován za významný. Rozdíl mezi největší částkou přidělenou najednou pro tyto dva státy a rozdílem mezi celkovými přiděleními pro tyto dva státy jsou také uloženy v stateDiff.

Ve výchozím nastavení nejsou interní bloky_CRT_BLOCK běhu jazyka C zahrnuté do operací stavu paměti. Funkci _CrtSetDbgFlag lze použít k zapnutí _CRTDBG_CHECK_CRT_DF bitu _crtDbgFlag zahrnutí těchto bloků do detekce nevracení a dalších operací stavu paměti. Uvolněné paměťové bloky (_FREE_BLOCK) nezpůsobují _CrtMemDifference vrácení TRUE.

Další informace o funkcích stavu haldy a _CrtMemState struktuře naleznete v tématu Funkce generování sestav stavu haldy. Informace o přidělování, inicializaci a správě bloků paměti ve verzi ladění základní haldy naleznete v podrobnostech haldy ladění CRT.

Požadavky

Rutina Požadovaný hlavičkový soubor Volitelné záhlaví
_CrtMemDifference <crtdbg.h> <errno.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Knihovny: Ladění verzí pouze knihoven modulu runtime jazyka C.

Viz také

Rutiny ladění
_crtDbgFlag