_aligned_offset_realloc
Zmienia rozmiar bloku pamięci przydzielonego za pomocą _aligned_malloc
polecenia lub _aligned_offset_malloc
.
Składnia
void * _aligned_offset_realloc(
void *memblock,
size_t size,
size_t alignment,
size_t offset
);
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.
Wartość zwracana
_aligned_offset_realloc
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 wyrównane do magazynu dowolnego typu obiektu. Aby uzyskać wskaźnik do typu innego niż void
, użyj rzutowania typu na wartość zwracaną.
_aligned_offset_realloc
jest oznaczony __declspec(noalias)
i __declspec(restrict)
, co oznacza, że funkcja nie ma gwarancji, aby nie modyfikować zmiennych globalnych i że zwrócony wskaźnik nie jest aliasowany. Aby uzyskać więcej informacji, zobacz tematy noalias
oraz restrict
.
Uwagi
Podobnie jak _aligned_offset_malloc
, _aligned_offset_realloc
umożliwia wyrównanie struktury do przesunięcia w strukturze.
_aligned_offset_realloc
jest oparty na .malloc
Aby uzyskać więcej informacji na temat korzystania z programu _aligned_offset_malloc
, zobacz malloc
. Jeśli memblock
parametr ma NULL
wartość , funkcja wywołuje _aligned_offset_malloc
wewnętrznie.
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
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
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_aligned_offset_realloc |
<malloc.h> |
Przykład
Aby uzyskać więcej informacji, zobacz _aligned_malloc
.