Bagikan melalui


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 Syang 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

Ekspresi dengan Operator Tunggal
Kata kunci