Rumah > pembangunan bahagian belakang > C++ > Mengapa Objek Kelas C Kosong Mempunyai Saiz 1 Bait?

Mengapa Objek Kelas C Kosong Mempunyai Saiz 1 Bait?

DDD
Lepaskan: 2024-12-21 13:32:09
asal
951 orang telah melayarinya

Why Does an Empty C   Class Object Have a Size of 1 Byte?

Menyingkap Saiz Objek Kelas Kosong

Menentukan saiz objek kepunyaan kelas kosong mungkin kelihatan seperti siasatan remeh, tetapi ia menyembunyikan kerumitan yang menarik.

Dalam C , kelas kosong pada asasnya ialah pemegang tempat, tidak mempunyai sebarang ahli atau kaedah data. Kebijaksanaan konvensional mungkin mencadangkan bahawa objek sedemikian tidak boleh menduduki ruang ingatan. Walau bagaimanapun, itu tidak berlaku.

Teka-teki: Saiz Sifar atau Bukan Sifar?

Pada pandangan pertama, nampaknya munasabah untuk mengharapkan objek kelas kosong akan mempunyai saiz 0 bait. Lagipun, ia tidak mengandungi maklumat yang ketara. Walau bagaimanapun, percubaan untuk merujuk atau memberikan penuding kepada objek kelas kosong menunjukkan bahawa ia mesti mempunyai saiz bukan sifar.

Eksperimen Mendedahkan

Dengan melaksanakan yang mudah atur cara yang mencipta objek kelas kosong dan mengeluarkan saiznya, menjadi jelas bahawa objek itu sememangnya mempunyai saiz 1 bait. Tingkah laku ini konsisten merentas pelbagai penyusun, termasuk Visual C dan Cygwin-g .

Kes Curious Enigma 1-Byte

Kejutan awal berpunca daripada jangkaan bahawa objek kelas kosong akan menduduki saiz yang sama dengan perkataan mesin (biasanya 32 atau 64 bit). Walau bagaimanapun, peruntukan saiz 1 bait dibenarkan oleh pertimbangan penjajaran.

Memandangkan objek kelas kosong tidak mengandungi data sebenar, penjajarannya adalah tidak penting. Ini membolehkan pengkompil memperuntukkan satu bait untuk objek, walaupun seni bina asas memerlukan penjajaran yang lebih besar untuk objek bukan kosong.

Mengapa Bukan Sifar Bait?

Walaupun objek kelas kosong tidak mempunyai data yang berkaitan, ia mesti mempunyai alamat unik. Keperluan ini timbul daripada peraturan asas bahawa objek yang berbeza mesti mempunyai alamat yang berbeza. Jika objek kelas kosong mempunyai saiz 0-bait, berbilang objek boleh dibayangkan menduduki alamat yang sama, yang akan melanggar prinsip ini.

Kesimpulan

Tugas yang kelihatan remeh menentukan saiz objek kelas kosong mendedahkan nuansa halus yang wujud dalam bahasa C. Walaupun tidak mengandungi data eksplisit, objek kelas kosong memerlukan saiz bukan sifar untuk memastikan alamat unik dan mematuhi kekangan penjajaran.

Atas ialah kandungan terperinci Mengapa Objek Kelas C Kosong Mempunyai Saiz 1 Bait?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan