Rumah >pembangunan bahagian belakang >C++ >Adakah `std::array` Mempunyai Saiz dan Susun Atur Memori yang Sama dengan Tatasusunan Terbina Dalam?
Adakah Saiz dan Susun atur Memori std::array Sama dengan Array?
Walaupun standard mendefinisikan std::array dengan bersebelahan storan dan prestasi yang setanding dengan tatasusunan biasa, ia meninggalkan sedikit ruang untuk kesamaran mengenai saiz dan ingatannya yang tepat susun atur.
Keperluan Standard
Seksyen 23.3.2.1/2 standard menyatakan bahawa tatasusunan ialah agregat yang dimulakan dengan senarai pemula yang mengandungi sehingga N elemen boleh ditukar kepada T. Ini menunjukkan bahawa std::array mesti menyimpan nilai itu sendiri, tidak termasuk sebarang tambahan data.
Variasi Potensi
Walau bagaimanapun, piawaian tidak secara jelas menjamin bahawa std::array akan mempunyai saiz dan susun atur memori yang sama seperti tatasusunan terbina dalam. Secara teorinya, pengkompil boleh menyimpan data tambahan tambahan selepas data yang ditentukan atau menggunakan peraturan pelapik atau penjajaran yang berbeza.
Pertimbangan Penjajaran Super
Tatasusunan terbina dalam tidak boleh menyokong super -keperluan penjajaran, seperti data untuk arahan SSE Intel. Walaupun spesifikasi std::array mungkin membenarkan penjajaran super, ia tidak dijamin secara eksplisit.
Implikasi Khusus Pelaksanaan
Kesimpulan: Keperluan standard tidak mengenakan secara muktamad std::array itu mesti mempunyai saiz dan susun atur memori yang sama dengan tatasusunan terbina dalam. Walaupun dokumentasi mencadangkan bahawa ia harus sama cekap memori, ia tetap khusus pelaksanaan. Oleh itu, seseorang tidak boleh bergantung pada andaian saiz dan reka letak memori yang sama.
Atas ialah kandungan terperinci Adakah `std::array` Mempunyai Saiz dan Susun Atur Memori yang Sama dengan Tatasusunan Terbina Dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!