Udostępnij przez


_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_dbgvoid 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 NULLjest , 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: bufory 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ć bufory. 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 bufory 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_MAXREQwartość . Aby uzyskać informacje o tym i innych kodach błędów, zobacz errno, _doserrno, _sys_errlisti _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.

Zobacz też

Procedury debugowania