Funkcje punktu zaczepienia alokacji
Funkcję hak alokacji zainstalowane za pomocą _CrtSetAllocHook, jest nazywany w każdym pamięci jest przydzielona, wówczas lub zwolnione.Ten rodzaj haka może służyć do wielu różnych celów.Użyj badania, jak aplikacja obsługuje sytuacje braku pamięci, na przykład zbadanie wzorców przydziału lub rejestrowanie informacji o alokacji dla późniejszej analizy.
[!UWAGA]
Należy pamiętać o ograniczenia dotyczące korzystania z funkcji biblioteki uruchomieniowej c w funkcji alokacji hak, opisane w przechwytuje alokacji oraz alokacji pamięci Run-Time C.
Funkcję alokacji hak powinny mieć prototyp następującą:
int YourAllocHook(int nAllocType, void *pvData,
size_t nSize, int nBlockUse, long lRequest,
const unsigned char * szFileName, int nLine )
Wskaźnik, który jest przekazywany do _CrtSetAllocHook jest typu _CRT_ALLOC_HOOK, jak określono w CRTDBG.H:
typedef int (__cdecl * _CRT_ALLOC_HOOK)
(int, void *, size_t, int, long, const unsigned char *, int);
Gdy biblioteka uruchomieniowa wywołuje Twój hak nAllocType argument wskazuje, jakie alokacji ma zostać wykonana operacja (_HOOK_ALLOC, _HOOK_REALLOC, lub _HOOK_FREE).W odniesieniu do darmowego lub ponownego rozdzielenia pvData zawiera wskaźnik do tematu użytkownikowi bloku zamiar zwolniona.Jednakże w odniesieniu do przydziału tego wskaźnika jest null, ponieważ alokacja jeszcze nie wystąpiły.Pozostałe argumenty nie zawierają rozmiar alokacji danego, jego typ bloku liczby kolejne żądania związane z i wskaźnik do pliku numer nazwy i wiersza w którym dokonano podziału, jeśli są dostępne.Po funkcji hak przeprowadza analizę niezależnie od innych zadań chce jej autora, musi ona zwracać albo TRUE, wskazując, że operacja alokacji można kontynuować, lub FALSE, wskazując, że operacja powinna zakończyć się niepowodzeniem.Proste hak tego typu może sprawdzić ilość pamięci dotąd i powrócić FALSE Jeśli kwota ta przekroczony limit małych.Aplikacja następnie odczuliby rodzaju błędy alokacji, które byłyby normalnie występuje tylko wtedy, gdy pamięć dostępna była bardzo niska.Bardziej złożone haki może zachować śledzić wzorców przydziału, analizować wykorzystania pamięci lub raportu, gdy wystąpią sytuacje.
Zobacz też
Koncepcje
Punkty zaczepienia alokacji i alokacja pamięci środowiska wykonawczego języka C