Sdílet prostřednictvím


_CrtSetAllocHook

Nainstaluje funkci klienta definováno rozdělení tak, že zapojení do procesu přidělování paměti spuštění ladění C (pouze ladicí verzi).

_CRT_ALLOC_HOOK _CrtSetAllocHook(
   _CRT_ALLOC_HOOK allocHook 
);

Parametry

  • allocHook
    Nová funkce klient definován přidělení zapojení do procesu přidělování paměti C spuštění ladění.

Vrácená hodnota

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

Poznámky

_CrtSetAllocHookumožňuje připojit vlastní funkci rozdělení do procesu přidělování paměti knihovny C run-time ladění aplikace.Každé volání funkce ladění přidělení přidělit, v důsledku toho přerozdělování nebo bez aktivace bloku paměti, volání funkce aplikace._CrtSetAllocHookaplikace poskytuje snadnou metodu pro testování jak aplikace zpracovává situaci nedostatku paměti možnost prozkoumat vzory přidělování a možnost Protokolovat informace o přidělení pro pozdější analýzu.Při _DEBUG není definován, je volání do _CrtSetAllocHook jsou odstraněny během předběžného zpracování.

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

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 rozdělení (_HOOK_ALLOC, _HOOK_REALLOC, a _HOOK_FREE), spustí volání funkce přidělení.Pokud je typ spouštěcího rozdělení _HOOK_FREE, userData je ukazatel na data uživatele část bloku paměti asi má být uvolněno.Však, pokud je typ spouštěcího rozdělení _HOOK_ALLOC nebo _HOOK_REALLOC, userData je NULL vzhledem k tomu, že dosud nebyl přidělen bloku paměti.

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

Po dokončení zpracování funkce zavěšení musí vrátit logickou hodnotu, která říká hlavní proces přidělení běhu C jak dále pokračovat.Pokud funkce zavěšení chce hlavní rozdělení procesu pokračovat jako, pokud funkce zavěšení bylo nikdy volána potom měli vrátit funkce TRUE.To způsobí, že původní spouštěcí operaci přidělení mají být provedeny.Pomocí této implementace, funkce zavěšení shromáždit a uložit informace o přidělení pro pozdější analýzu, aniž byste narušili aktuální operaci přidělení nebo stát halda ladění.

Pokud funkce zavěšení chce hlavní rozdělení procesu pokračovat jako spouštěcí operace rozdělení byla volána a selhání, pak měli vrátit funkce FALSE.Pomocí této implementace, funkce zavěšení široký rozsah paměti pro simulaci a ladění haldy státy otestovat, jak aplikace zpracovává každou situaci.

Chcete-li zrušit funkci háčkem, NULL k _CrtSetAllocHook.

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

[!POZNÁMKA]

_CrtSetAllocHooknení podporován v rámci /clr:pure.

Požadavky

Rutina

Požadované záhlaví

_CrtSetAllocHook

<crtdbg.h>

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

Knihovny

Verze ladění pouze běhových knihoven C.

Příklad

Příklad použití _CrtSetAllocHook, viz crt_dbg2.

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í

_CrtGetAllocHook