_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: 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 newSize
obiekt . 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ć. 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_MAXREQ
wartość . Aby uzyskać informacje o tym i innych kodach błędów, zobacz errno
, _doserrno
, _sys_errlist
i _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.