_aligned_offset_malloc
Belirtilen hizalama sınırında bellek ayırır.
Sözdizimi
void * _aligned_offset_malloc(
size_t size,
size_t alignment,
size_t offset
);
Parametreler
size
İstenen 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
Ayrılan bellek bloğunun veya NULL
işlemin başarısız olup olmadığını gösteren bir işaretçi.
Açıklamalar
_aligned_offset_malloc
iç içe yerleştirilmiş bir öğede hizalamanın gerekli olduğu durumlarda kullanışlıdır; örneğin, iç içe geçmiş bir sınıfta hizalama gerekliyse.
_aligned_offset_malloc
öğesini temel alır malloc
; daha fazla bilgi için bkz malloc
. .
_aligned_offset_malloc
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
.
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_malloc
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_malloc |
<malloc.h> |
Örnek
Daha fazla bilgi için bkz. _aligned_malloc
.