_realloc_dbg

Zmienia przydział określonego bloku pamięci w stercie przez przeniesienie i/lub zmianę rozmiaru bloku (tylko wersja debugowania).

Składnia

void *_realloc_dbg(
   void *userData,
   size_t newSize,
   int blockType,
   const char *filename,
   int linenumber
);

Parametry

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

newSize
Żądany rozmiar bloku przydziału rzeczywistego (bajtów).

blockType
Żądany typ dla bloku przydziału rzeczywistego: _CLIENT_BLOCK lub _NORMAL_BLOCK.

filename
Wskaźnik do nazwy pliku źródłowego, który zażądał realloc operacji lub NULL.

linenumber
Numer wiersza w pliku źródłowym, w realloc którym zażądano operacji lub NULL.

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

Uwagi

_realloc_dbg jest wersją realloc debugowania funkcji. Jeśli _DEBUG nie jest zdefiniowane, każde wywołanie metody _realloc_dbg jest zmniejszane do wywołania metody realloc. Zarówno realloc , jak i _realloc_dbg przydzielić blok pamięci w stercie podstawowej, ale _realloc_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.

_realloc_dbg ponownie przydziela określony blok pamięci z nieco większą ilością miejsca niż żądany newSizeobiekt . newSize 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. Jeśli blok pamięci zostanie przeniesiony, zawartość oryginalnego bloku zostanie zastąpiona.

_realloc_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
_realloc_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

Zobacz przykład w _msize_dbg artykule.

Zobacz też

Procedury debugowania
_malloc_dbg