alignof
operator
Operator alignof
mengembalikan perataan dalam byte dari jenis yang ditentukan sebagai nilai jenis size_t
.
Sintaks
alignof( type )
Keterangan
Contohnya:
Expression | Nilai |
---|---|
alignof( char ) |
1 |
alignof( short ) |
2 |
alignof( int ) |
4 |
alignof( long long ) |
8 |
alignof( float ) |
4 |
alignof( double ) |
8 |
Nilainya alignof
sama dengan nilai untuk sizeof
jenis dasar. Namun, pertimbangkan contoh ini:
typedef struct { int a; double b; } S;
// alignof(S) == 8
Dalam hal ini, alignof
nilainya adalah persyaratan penyelarasan dari elemen terbesar dalam struktur.
Demikian pula, untuk
typedef __declspec(align(32)) struct { int a; } S;
alignof(S)
sama dengan 32
.
Satu penggunaan untuk alignof
adalah sebagai parameter untuk salah satu rutinitas alokasi memori Anda sendiri. Misalnya, mengingat struktur S
yang ditentukan berikut , Anda dapat memanggil rutinitas alokasi memori bernama aligned_malloc
untuk mengalokasikan memori pada batas perataan tertentu.
typedef __declspec(align(32)) struct { int a; double b; } S;
int n = 50; // array size
S* p = (S*)aligned_malloc(n * sizeof(S), alignof(S));
Untuk informasi selengkapnya tentang mengubah perataan, lihat:
Untuk informasi selengkapnya tentang perbedaan penyelarasan dalam kode untuk x86 dan x64, lihat:
Khusus Microsoft
alignof
dan __alignof
merupakan sinonim dalam pengompilasi Microsoft. Sebelum menjadi bagian dari standar di C++11, operator khusus __alignof
Microsoft menyediakan fungsionalitas ini. Untuk portabilitas maksimum, Anda harus menggunakan alignof
operator alih-alih operator khusus __alignof
Microsoft.
Untuk kompatibilitas dengan versi sebelumnya, _alignof
adalah sinonim kecuali __alignof
opsi /Za
pengompilasi (Nonaktifkan ekstensi bahasa) ditentukan.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk