Udostępnij za pośrednictwem


_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.

Zobacz też

Informacje

Procedury debugowania

malloc

_calloc_dbg

_calloc_dbg