Udostępnij za pośrednictwem


_aligned_offset_recalloc

Zmienia rozmiar bloku pamięci przydzielonego na _aligned_malloc wartość lub _aligned_offset_malloc i inicjuje pamięć na 0.

Składnia

void * _aligned_offset_recalloc(
   void *memblock,
   size_t num,
   size_t size,
   size_t alignment,
   size_t offset
);

Parametry

memblock
Bieżący wskaźnik bloku pamięci.

number
Liczba elementów.

size
Długość w bajtach każdego elementu.

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_recalloc 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 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ą.

_aligned_offset_recalloc 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_recalloc umożliwia wyrównanie struktury do przesunięcia w strukturze.

_aligned_offset_recallocjest oparty na .malloc Aby uzyskać więcej informacji na temat korzystania z programu _aligned_offset_malloc, zobacz malloc. Jeśli memblock parametr ma NULLwartość , funkcja wywołuje _aligned_offset_malloc wewnętrznie.

Ta funkcja ustawia wartość errno , ENOMEM jeśli alokacja pamięci nie powiodła się lub jeśli żądany rozmiar ( * numbersize) był większy niż _HEAP_MAXREQ. Aby uzyskać więcej informacji na temat errnoprogramu , zobaczerrno , _doserrno, _sys_errlisti _sys_nerr. _aligned_offset_recalloc Ponadto weryfikuje jego parametry. Jeśli alignment nie jest mocą 2 lub jeśli offset nie ma wartości zero lub jest większa niż lub równa żądanej 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_recalloc <malloc.h>

Zobacz też

Wyrównanie danych
_recalloc
_aligned_recalloc