Funkce háku přidělení
Funkce háčkem přidělení, nainstalované pomocí _CrtSetAllocHook, se nazývá vždy přidělena, přerozděleny nebo uvolnění paměti.Tento typ zavěšení lze použít pro mnoho různých účelů.Použijte ji otestovat, jak aplikace zpracovává situacích není dostatek paměti, nebo přezkoumá rozdělení vzorků nebo informace o přidělení pro pozdější analýzu.
[!POZNÁMKA]
Uvědomte si, omezení použití funkce C Runtime library ve funkci háčkem přidělení, popsané v přidělení zavěsí a přidělení paměti C Runtime.
Přidělení funkce by měly mít prototypu následující:
int YourAllocHook(int nAllocType, void *pvData,
size_t nSize, int nBlockUse, long lRequest,
const unsigned char * szFileName, int nLine )
Ukazatel, který předáte do _CrtSetAllocHook je typu _CRT_ALLOC_HOOK, jak jsou definovány v CRTDBG.H:
typedef int (__cdecl * _CRT_ALLOC_HOOK)
(int, void *, size_t, int, long, const unsigned char *, int);
Pokud knihovna runtime volá váš háčkem nAllocType argument určuje, jaké přidělení operace je provedeno (_HOOK_ALLOC, _HOOK_REALLOC, nebo _HOOK_FREE).Z bezplatného nebo přerozdělení pvData obsahuje ukazatel na téma uživatele bloku chcete uvolnit.Však z přidělení, tento ukazatel má hodnotu null, protože přiřazení ještě nedošlo.Zbývající argumenty obsahovat velikosti přidělení dotyčné jeho typ bloku požadavku sekvenční číslo přidružené a ukazatel na soubor název a řádek číslo ve kterém byla provedena přidělení, pokud je k dispozici.Po zavěšení funkce provádí analýzu bez ohledu a jiné úkoly jeho autor chce, musí vrátit buď TRUE, označující, že přidělení operaci pokračovat, nebo FALSE, označující, že nezdaří.Jednoduché zavěšení tohoto typu může kontrolovat množství paměti přidělené dosavadní a vrátit FALSE Pokud tato částka malé překročili.Aplikace potom dostal druh chyby přidělení, které by normálně dochází pouze v případě, že byl velmi málo dostupné paměti.Složitější háky pravděpodobně přehled o přidělení vzorky, analyzovat využití paměti nebo zprávy při výskytu určitých situacích.
Viz také
Koncepty
Háky přidělení a přidělení běhové paměti jazyka C