_aligned_offset_realloc_dbg
Zmienia rozmiar bloku pamięci przydzielonego za pomocą _aligned_malloc
polecenia lub _aligned_offset_malloc
(tylko wersja debugowania).
Składnia
void * _aligned_offset_realloc_dbg(
void *memblock,
size_t size,
size_t alignment,
size_t offset,
const char *filename,
int linenumber
);
Parametry
memblock
Bieżący wskaźnik bloku pamięci.
size
Rozmiar alokacji pamięci.
alignment
Wartość wyrównania, która musi być całkowitą potęgą liczby 2.
offset
Przesunięcie alokacji pamięci, aby wymusić wyrównanie.
filename
Wskaźnik do nazwy pliku źródłowego, który zażądał aligned_offset_realloc
operacji lub NULL
.
linenumber
Numer wiersza w pliku źródłowym, w aligned_offset_realloc
którym zażądano operacji lub NULL
.
Wartość zwracana
_aligned_offset_realloc_dbg
Zwraca wskaźnik void do ponownie 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 dopasowane do magazynu dowolnego typu obiektu. Aby uzyskać wskaźnik do typu innego niż void, użyj rzutowania typu na wartość zwracaną.
Uwagi
_aligned_offset_realloc_dbg
jest wersją _aligned_offset_realloc
debugowania funkcji. Jeśli _DEBUG
nie jest zdefiniowane, każde wywołanie metody _aligned_offset_realloc_dbg
jest zmniejszane do wywołania metody _aligned_offset_realloc
. Zarówno _aligned_offset_realloc
blok pamięci w stercie podstawowym, jak _aligned_offset_realloc_dbg
i _aligned_offset_realloc_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.
Podobnie jak _aligned_offset_malloc
, _aligned_offset_realloc_dbg
umożliwia wyrównanie struktury do przesunięcia w strukturze.
_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 przenieść oryginalny blok pamięci do innej lokalizacji w stercie, a także zmienić rozmiar bloku pamięci. Jeśli blok pamięci zostanie przeniesiony, zawartość oryginalnego bloku zostanie zastąpiona.
Ta funkcja ustawia errno
na ENOMEM
jeśli alokacja pamięci nie powiodła się lub jeśli żądany rozmiar był większy niż _HEAP_MAXREQ
. Aby uzyskać więcej informacji na temat errno
programu , zobaczerrno
, _doserrno
, _sys_errlist
i _sys_nerr
. _aligned_offset_realloc_dbg
Ponadto weryfikuje jego parametry. Jeśli alignment
nie jest potęgą 2 lub jeśli offset
nie ma wartości zero lub jest równa size
, ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Walidacja 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_offset_realloc_dbg |
<crtdbg.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Biblioteki
Debugowanie tylko wersji bibliotek czasu wykonywania języka C.