_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í FALSE
hodnotu .
Poznámky
Funkce _CrtMemDifference
porovnává a newState
ukládá jejich rozdílyoldState
, stateDiff
které 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 stateDiff
vyvolána NULL
newState
oldState
neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Je-li spuštění povoleno pokračovat, , , _sys_errlist
_doserrno
a _sys_nerr
je 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.