_malloc_dbg
Przydziela bloku pamięci w stosie o dodatkowe miejsce na nagłówek debugowania, a następnie zastąp buforów (tylko w wersji debugowania).
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 na nazwę pliku źródłowego, który zażądał operacji alokacji lub NULL.linenumber
Numer wiersza w pliku źródłowym, gdzie zażądano operacji alokacji lub NULL.
filename i linenumber parametry są dostępne tylko podczas _malloc_dbg została wywołana jawnie lub _CRTDBG_MAP_ALLOC stałą preprocessor została zdefiniowana.
Wartość zwracana
Po pomyślnym zakończeniu ta funkcja zwraca wskaźnik do użytkownika część bloku alokacji pamięci, wywołuje nowej funkcji obsługi lub zwraca wartość NULL.Pełny opis zwrotny zachowanie zobacz w poniższej sekcji uwag.Aby uzyskać więcej informacji o sposobie korzystania z nowych funkcji programu obsługi, zobacz malloc funkcji.
Uwagi
_malloc_dbgjest to wersja debugowania malloc funkcji.Gdy _DEBUG nie jest zdefiniowany, każde wywołanie _malloc_dbg jest ograniczone do wywołania malloc.Zarówno malloc jak i _malloc_dbg przydzielają blok pamięci na stosie podstawowym, ale _malloc_dbg oferuje kilka funkcji debugowania: bufory po obu stronach części bloku użytkownika do testowania przecieków, parametr typu blok do śledzenia określonych typów alokacji i informacje filename/linenumber do ustalenia źródła pochodzenia żądania alokacji.
_malloc_dbg alokuje blok pamięci z nieco większą ilością miejsca niż żądane size.Dodatkowe miejsce jest używane przez menedżera stosu debugowania, do łączenia bloków pamięci debugowania i do dostarczenia aplikacji informacji nagłówka debugowania i zastąpienia buforów.Gdy blok zostanie przydzielony, część użytkownika bloku jest wypełniania wartościami 0xCD a każdy bufor zastąpienia jest wypełniany wartościami 0xFD.
_malloc_dbgUstawia errno do ENOMEM Jeśli alokacja pamięci nie powiedzie się lub przekracza ilość pamięci potrzebne (w tym przeciążenia wcześniej wymienione) _HEAP_MAXREQ.Aby uzyskać informacji o tej i innych kodów błędów, zobacz errno, _doserrno, _sys_errlist, and _sys_nerr.
Informacji dotyczących sposobu bloków pamięci są przydzielone, został zainicjowany i zarządzanych w wersji podstawowej stosu debugowania, zobacz Szczegóły dotyczące stosu debugowania CRT.Uzyskać informacje dotyczące typów bloku alokacji i sposób ich użycia, zobacz typów bloków na debugowanie stosu.Aby informacji na temat różnic między w kompilację debugowania aplikacji wywoływania funkcji standardowego stosu oraz jego wersję debugowania, zobacz Wersja debugowania funkcji alokacji stosu.
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
_malloc_dbg |
< crtdbg.h > |
Aby uzyskać więcej informacji o zgodności, zobacz zgodności we wprowadzeniu.
Biblioteki
Debugowanie wersje C biblioteki czasu wykonywania tylko.
Przykład
Przykładowe sposób użycia _malloc_dbg, zobacz crt_dbg1.
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz przykłady wywołania platformy.