_aligned_recalloc_dbg
Zmienia rozmiar bloku pamięci przydzielonego na _aligned_malloc
wartość lub _aligned_offset_malloc
i inicjuje pamięć na 0 (tylko wersja debugowania).
Składnia
void * _aligned_recalloc_dbg(
void * memblock,
size_t num,
size_t size,
size_t alignment,
const char *filename,
int linenumber
);
Parametry
memblock
Bieżący wskaźnik bloku pamięci.
number
Liczba elementów.
size
Rozmiar w bajtach każdego elementu.
alignment
Wartość wyrównania, która musi być całkowitą potęgą liczby 2.
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
.
Wartość zwracana
_aligned_recalloc_dbg
void
Zwraca wskaźnik do przydzielonego (i prawdopodobnie przeniesionego) bloku pamięci. Wartość zwracana jest, jeśli rozmiar ma NULL
wartość zero, a argument buforu nie NULL
jest , lub jeśli nie ma wystarczającej ilości dostępnej pamięci, aby rozwinąć blok do danego rozmiaru. W pierwszym przypadku oryginalny blok zostanie uwolniony. W drugim przypadku oryginalny blok pozostaje niezmieniony. Wartość zwracana wskazuje miejsce do magazynowania, które jest odpowiednio wyrównane do magazynu dowolnego typu obiektu. Aby uzyskać wskaźnik do typu innego niż void
, użyj rzutowania typu na wartość zwracaną.
Jest to błąd podczas reallokowania pamięci i zmieniania wyrównania bloku.
Uwagi
_aligned_recalloc_dbg
jest wersją _aligned_recalloc
debugowania funkcji. Jeśli _DEBUG
nie jest zdefiniowane, każde wywołanie metody _aligned_recalloc_dbg
jest zmniejszane do wywołania metody _aligned_recalloc
. Zarówno _aligned_recalloc
blok pamięci w stercie podstawowym, jak _aligned_recalloc_dbg
i _aligned_recalloc_dbg
zostanie przydzielony do wielu funkcji debugowania: po obu stronach bloku w celu przetestowania przecieków oraz filename
/linenumber
informacje w celu określenia źródła żądań alokacji. Śledzenie określonych typów alokacji przy użyciu parametru typu bloku nie jest obsługiwaną funkcją debugowania dla wyrównanych alokacji. Alokacje wyrównane będą wyświetlane jako _NORMAL_BLOCK
typ bloku.
_aligned_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 przenieść oryginalny blok pamięci do innej lokalizacji w stercie i zmienić rozmiar bloku pamięci. Część bloku użytkownika jest wypełniona wartością 0xCD, a zastępowania są wypełniane 0xFD.
_aligned_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
.
_aligned_recalloc_dbg
Ponadto weryfikuje jego parametry. Jeśli alignment
nie jest mocą 2, ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, ta funkcja zwraca NULL
i ustawia wartość errno
.EINVAL
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 ich wersjami debugowania, zobacz Debugowanie wersji funkcji alokacji sterty.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_aligned_recalloc_dbg |
<crtdbg.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Biblioteki
Debugowanie tylko wersji bibliotek czasu wykonywania języka C.