Sdílet prostřednictvím


_CrtSetAllocHook

Nainstaluje funkci klienta definované rozdělení podle zapojení do procesu přidělování paměti c spuštění ladění (pouze ladicí verze).

_CRT_ALLOC_HOOK _CrtSetAllocHook(
   _CRT_ALLOC_HOOK allocHook 
);

Parametry

  • allocHook
    Nové funkce klienta definované přidělení k zapojení do procesu přidělování paměti c spuštění ladění.

Vrácená hodnota

Vrátí funkci háčkem dříve definované přidělení, nebo NULL -li allocHook je NULL.

Poznámky

_CrtSetAllocHookumožňuje aplikaci vlastní funkci přidělení zapojení do procesu přidělování paměti debug C Runtime knihovny.Jako výsledek každého volání funkce ladění přidělení přidělit, přerozdělit nebo bez volání funkce aplikace háčkem aktivace paměti bloku._CrtSetAllocHookaplikace umožňuje snadno metodu pro zkoušení, jak aplikace zpracovává nedostatek paměti situacích mohou přezkoumat přidělení vzorky a informace o přidělení pro pozdější analýzu příležitost.Při _DEBUG není definována, volání do _CrtSetAllocHook jsou odebrány při úpravě před zpracováním.

_CrtSetAllocHook Funkce nainstaluje nové funkce přidělení klienta definované v allocHook a vrátí funkce dříve definované háčkem.Následující příklad ukazuje, jak by měl být klient definován přidělení háčkem prototyped:

int YourAllocHook( int allocType, void *userData, size_t size, int 
blockType, long requestNumber, const unsigned char *filename, int 
lineNumber);

allocType Argument určuje typ operace přidělení (_HOOK_ALLOC, _HOOK_REALLOC, a _HOOK_FREE), spustí volání funkce háčkem přidělení.Pokud je spouštěcí typu rozdělení _HOOK_FREE, userData je ukazatel na uživatelské datové části bloku paměti chcete uvolnit.Pokud spouštěcí typu rozdělení je však _HOOK_ALLOC nebo _HOOK_REALLOC, userData je NULL protože blok paměti není dosud přidělena.

sizeUrčuje blokovat velikost paměti v bajtech, blockType označuje typ bloku paměti requestNumber je objekt přidělení pořadové číslo bloku paměti a pokud je k dispozici filename a lineNumber zadat číslo zdrojového souboru název a řádek Pokud bylo zahájeno spouštějícího operace přidělení.

Po dokončení zpracování funkce hák musí vrátit booleovskou hodnotu, který říká hlavní C Runtime přidělení procesu, jak pokračovat.Když funkce háčkem chce hlavní přidělení procesu jako pokračovat, pokud by nikdy byla volána funkce háčkem poté háčkem funkce měla vrátit TRUE.To způsobí, že původní spouštěcí přidělení operace, které mají být provedeny.Pomocí této implementace funkce háčkem shromáždit a uložit informace o přidělení pro pozdější analýzu bez zasahování aktuální operace přidělení nebo stát haldy ladění.

Při zavěšení funkce chce hlavní přidělení procesu jako pokračovat, pokud byla volána operace spouštějícího přidělení a se nezdařilo, potom funkce háčkem by měl vrátit FALSE.Pomocí této implementace funkce háčkem simulovat široký rozsah paměti a ladění haldy státy vyzkoušet, jak aplikace zpracovává každou situaci.

Chcete-li zrušit funkci háčkem předat NULL na _CrtSetAllocHook.

Další informace o _CrtSetAllocHook lze použít další funkce správy paměti nebo zapsat funkce klienta definované háčkem naleznete v tématu Psaní svůj vlastní ladění háčkem funkce.

[!POZNÁMKA]

_CrtSetAllocHooknepodporuje /clr:pure.

Požadavky

Rutina

Požadované záhlaví

_CrtSetAllocHook

<crtdbg.h>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

Knihovny

Ladění verze C Runtime knihovny pouze.

Příklad

Ukázku použití _CrtSetAllocHook, viz crt_dbg2.

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

Ladění rutin

_CrtGetAllocHook