_aligned_offset_realloc
veya _aligned_offset_malloc
ile _aligned_malloc
ayrılan bir bellek bloğunun boyutunu değiştirir.
Sözdizimi
void * _aligned_offset_realloc(
void *memblock,
size_t size,
size_t alignment,
size_t offset
);
Parametreler
memblock
Geçerli bellek bloğu işaretçisi.
size
Bellek ayırmanın boyutu.
alignment
Hizalama değeri, 2 tamsayı gücü olmalıdır.
offset
Hizalamayı zorlamak için bellek ayırmaya uzaklık.
Dönüş değeri
_aligned_offset_realloc
yeniden ayrılan (ve büyük olasılıkla taşınan) bellek bloğu için geçersiz bir işaretçi döndürür. Dönüş değeri, NULL
boyutun sıfır olması ve arabellek bağımsız değişkeninin NULL
olmaması veya bloğu verilen boyuta genişletmek için yeterli kullanılabilir bellek olmamasıdır. İlk durumda, özgün blok serbesttir. İkinci durumda, özgün blok değiştirilmez. Dönüş değeri, herhangi bir nesne türünün depolaması için uygun olan bir depolama alanını gösterir. dışında void
bir türe işaretçi almak için dönüş değerinde tür tür ataması kullanın.
_aligned_offset_realloc
ve __declspec(restrict)
olarak işaretlenir__declspec(noalias)
, yani işlevin genel değişkenleri değiştirmemesi garanti edilir ve döndürülen işaretçi diğer adla kullanılmaz. Daha fazla bilgi için bkz. noalias
ve restrict
.
Açıklamalar
gibi _aligned_offset_malloc
, _aligned_offset_realloc
bir yapının yapı içindeki bir uzaklıkta hizalanmasına izin verir.
_aligned_offset_realloc
tabanlıdır malloc
. kullanma _aligned_offset_malloc
hakkında daha fazla bilgi için bkz malloc
. . ise memblock
NULL
, işlevi dahili olarak çağırır _aligned_offset_malloc
.
Bu işlev, bellek ayırmanın başarısız olup olmadığını veya istenen boyutun değerinden _HEAP_MAXREQ
büyük olup olmadığını olarak ayarlar.errno
ENOMEM
hakkında errno
daha fazla bilgi için bkz.errno
, _doserrno
, _sys_errlist
ve _sys_nerr
. Ayrıca parametrelerini _aligned_offset_realloc
doğrular. alignment
2'nin gücü değilse veya sıfır olmayan ve değerinden büyük veya buna eşitsesize
offset
, bu işlev Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, bu işlev döndürür NULL
ve olarak EINVAL
ayarlanırerrno
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_aligned_offset_realloc |
<malloc.h> |
Örnek
Daha fazla bilgi için bkz. _aligned_malloc
.