Udostępnij za pośrednictwem


_malloc_dbg

Przydziela blok pamięci w stercie z dodatkowym miejscem na nagłówek debugowania i zastępowanie buforów (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: bufory 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ć bufory. Po przydzieleniu bloku część użytkownika bloku jest wypełniona wartością 0xCD, a każdy z buforów 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.

Zobacz też

Procedury debugowania
malloc
_calloc_dbg