Udostępnij za pośrednictwem


_recalloc_dbg

Ponownie przydziela tablicę i inicjuje jej elementy do wartości 0 (tylko wersja debugowania).

Składnia

void *_recalloc_dbg(
   void *userData,
   size_t num,
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Parametry

userData
Wskaźnik do wcześniej przydzielonego bloku pamięci.

number
Żądana liczba bloków pamięci.

size
Żądany rozmiar każdego bloku pamięci (bajtów).

blockType
Żądany typ bloku pamięci: _CLIENT_BLOCK lub _NORMAL_BLOCK.

Aby uzyskać informacje o typach bloków alokacji i sposobie ich użycia, zobacz Typy bloków na stercie debugowania.

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, w którym zażądano operacji alokacji lub NULL.

Parametry filename i linenumber są dostępne tylko wtedy, gdy _recalloc_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 _recalloc funkcję .

Uwagi

_recalloc_dbg jest wersją _recalloc debugowania funkcji. Jeśli _DEBUG nie jest zdefiniowane, każde wywołanie metody _recalloc_dbg jest zmniejszane do wywołania metody _recalloc. Zarówno _recalloc , jak i _recalloc_dbg przydzielić blok pamięci w stercie podstawowej, ale _recalloc_dbg obsługuje kilka funkcji debugowania: bufory po obu stronach bloku, aby przetestować przecieki, parametr typu bloku do śledzenia określonych typów alokacji i filename/linenumber informacje w celu określenia źródła żądań alokacji.

_recalloc_dbg ponownie przydziela określony blok pamięci z nieco większą ilością miejsca niż żądany rozmiar (number * size), który może być większy lub mniejszy niż rozmiar pierwotnie przydzielonego bloku pamięci. 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. Lokalizacja rzeczywista może spowodować przeniesienie oryginalnego bloku pamięci do innej lokalizacji w stercie i zmianę rozmiaru bloku pamięci. Część bloku użytkownika jest wypełniona wartością 0xCD, a każdy z buforów zastępowania jest wypełniony 0xFD.

_recalloc_dbg ustawia wartość errno na ENOMEM wartość , jeśli alokacja pamięci nie powiedzie się; EINVAL jest zwracana, 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 różnicach między standardowymi funkcjami sterty i wersjami debugowania, zobacz Debugowanie wersji funkcji alokacji sterty.

Wymagania

Procedura Wymagany nagłówek
_recalloc_dbg <Crtdbg.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Biblioteki

Debugowanie tylko wersji bibliotek czasu wykonywania języka C.

Zobacz też

Procedury debugowania