Rumah >pembangunan bahagian belakang >C++ >Mengapa Struktur C dengan 3 Integer Pendek Mempunyai Saiz 6 Bait, Tetapi Struktur Serupa dengan Integer Ditambah Mempunyai Saiz 12 Bait?
Penjajaran Memori dalam Struktur C
Dalam pengkomputeran, penjajaran memori merujuk kepada sekatan yang diletakkan pada alamat di mana data boleh disimpan dalam memori . Memahami penjajaran memori adalah penting untuk mengoptimumkan prestasi kod dan mengelakkan tingkah laku yang tidak dijangka.
Pernyataan Masalah:
Anda sedang mengusahakan sistem 32-bit dengan penjajaran memori biasanya ditetapkan kepada 4 bait. Pertimbangkan struct berikut:
<code class="c">typedef struct { unsigned short v1; unsigned short v2; unsigned short v3; } myStruct;</code>
Struktur mengandungi tiga medan 2-bait, tetapi menggunakan operator sizeof mengembalikan 6 bait dan bukannya 8 bait yang dijangkakan. Sebaliknya, struct berikut:
<code class="c">typedef struct { unsigned short v1; unsigned short v2; unsigned short v3; int i; } myStruct;</code>
mengembalikan saiz 12 bait, seperti yang dijangkakan daripada peningkatan bilangan medan dan potensi untuk padding. Mengapakah terdapat perbezaan dalam saiz yang terhasil?
Penjelasan:
Pada kebanyakan mesin, jenis data diselaraskan dengan sempadan yang tidak lebih besar daripada saiznya. Dalam kes ini, pendek ialah 2 bait dan int ialah 4 bait.
Struktur Pertama:
Struktur Kedua:
Atas ialah kandungan terperinci Mengapa Struktur C dengan 3 Integer Pendek Mempunyai Saiz 6 Bait, Tetapi Struktur Serupa dengan Integer Ditambah Mempunyai Saiz 12 Bait?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!