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