Aracılığıyla paylaş


_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_mallocve __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_MAXREQbüyük olup olmadığını olarak ayarlar.errno ENOMEM hakkında errnodaha fazla bilgi için bkz.errno , _doserrno, _sys_errlistve _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şitsesizeoffset, 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 EINVALayarlanı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.

Ayrıca bkz.

Veri hizalama