_malloc_dbg
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 size
element . 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_MAXREQ
wartość . Aby uzyskać informacje o tym i innych kodach błędów, zobacz errno
, _doserrno
, _sys_errlist
i _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
.