Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przydziela blok pamięci w stercie z dodatkowym miejscem na nagłówek debugowania i zastępowanie (tylko wersja debugowania).
Składnia
void *_malloc_dbg(
size_t size,
int blockType,
const char *filename,
int linenumber
);
Parametry
size
Żądany rozmiar bloku pamięci (w bajtach).
blockType
Żądany typ bloku pamięci: _CLIENT_BLOCK lub _NORMAL_BLOCK.
filename
Wskaźnik do nazwy pliku źródłowego, który zażądał operacji alokacji lub NULL.
linenumber
Numer wiersza w pliku źródłowym, w którym zażądano operacji alokacji lub NULL.
Parametry filename i linenumber są dostępne tylko wtedy, gdy _malloc_dbg została wywołana jawnie lub zdefiniowano stałą _CRTDBG_MAP_ALLOC preprocesora.
Wartość zwracana
Po pomyślnym zakończeniu ta funkcja zwraca wskaźnik do części użytkownika przydzielonego bloku pamięci, wywołuje nową funkcję obsługi lub zwraca wartość NULL. Pełny opis zachowania zwracanego można znaleźć w poniższej sekcji Uwagi. Aby uzyskać więcej informacji na temat sposobu użycia nowej funkcji obsługi, zobacz malloc funkcję .
Uwagi
_malloc_dbg jest wersją malloc debugowania funkcji. Jeśli _DEBUG nie jest zdefiniowane, każde wywołanie metody _malloc_dbg jest zmniejszane do wywołania metody malloc. Zarówno malloc , jak i _malloc_dbg przydziel blok pamięci w stercie podstawowej, ale _malloc_dbg oferuje kilka funkcji debugowania: po obu stronach bloku do testowania wycieków, parametr typu bloku do śledzenia określonych typów alokacji i filename/linenumber informacje w celu określenia źródła żądań alokacji.
_malloc_dbg przydziela blok pamięci z nieco większą ilością miejsca niż żądany sizeelement . Dodatkowe miejsce jest używane przez menedżera sterty debugowania, aby połączyć bloki pamięci debugowania i udostępnić aplikacji informacje nagłówka debugowania i zastąpić. Po przydzieleniu bloku część użytkownika bloku jest wypełniona wartością 0xCD, a każdy z zastępowania jest wypełniony 0xFD.
_malloc_dbg ustawia wartość errno , ENOMEM jeśli alokacja pamięci zakończy się niepowodzeniem lub jeśli wymagana ilość pamięci (w tym narzut wymieniony wcześniej) przekracza _HEAP_MAXREQwartość . Aby uzyskać informacje o tym i innych kodach błędów, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.
Aby uzyskać informacje na temat przydzielania, inicjowania i zarządzania blokami pamięci w wersji debugowania sterty podstawowej, zobacz szczegóły sterty debugowania CRT. Aby uzyskać informacje o typach bloków alokacji i sposobie ich użycia, zobacz Typy bloków na stercie debugowania. Aby uzyskać informacje o różnicach między standardowymi funkcjami sterty i wersjami debugowania, zobacz Debugowanie wersji funkcji alokacji sterty.
Wymagania
| Procedura | Wymagany nagłówek |
|---|---|
_malloc_dbg |
<crtdbg.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Biblioteki
Debugowanie tylko wersji bibliotek czasu wykonywania języka C.
Przykład
Aby zapoznać się z przykładem korzystania z programu _malloc_dbg, zobacz crt_dbg1.