Pertanyaan yang diberi tag «memory-alignment»

8
Tujuan penyelarasan memori
Memang saya tidak mengerti. Katakanlah Anda memiliki memori dengan kata memori yang panjangnya 1 byte. Mengapa Anda tidak dapat mengakses variabel panjang 4 byte dalam akses memori tunggal pada alamat yang tidak selaras (yaitu tidak dapat dibagi dengan 4), karena ini adalah kasus dengan alamat yang disejajarkan?

16
Contoh menarik dari pengalokasi C ++ khusus?
Apa saja alasan yang sangat bagus untuk std::allocatormendukung solusi khusus? Sudahkah Anda menghadapi situasi di mana itu benar-benar diperlukan untuk kebenaran, kinerja, skalabilitas, dll? Adakah contoh yang benar-benar pintar? Pengalokasi khusus selalu menjadi fitur dari Perpustakaan Standar yang belum terlalu saya butuhkan. Saya hanya ingin tahu apakah ada orang di …

4
Mengapa perataan struct bergantung pada apakah jenis bidang primitif atau ditentukan pengguna?
Di Noda Time v2, kami beralih ke resolusi nanodetik. Itu berarti kita tidak dapat lagi menggunakan integer 8-byte untuk mewakili seluruh rentang waktu yang kita minati. Itu mendorong saya untuk menyelidiki penggunaan memori dari (banyak) struct Waktu Noda, yang pada gilirannya membawa saya untuk mengungkap sedikit keanehan dalam keputusan penyelarasan …

4
Apakah variabel stack diselaraskan dengan GCC __attribute __ ((aligned (x)))?
Saya memiliki kode berikut: #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } Dan saya memiliki output berikut: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac Mengapa alamatnya a[0]bukan kelipatan 0x1000? Apa sebenarnya yang __attribute__((aligned(x)))dilakukannya? Saya salah paham dengan penjelasan ini …

2
Mengapa alamat argc dan argv 12 byte terpisah?
Saya menjalankan program berikut di komputer saya (Intel 64-bit menjalankan Linux). #include <stdio.h> void test(int argc, char **argv) { printf("[test] Argc Pointer: %p\n", &argc); printf("[test] Argv Pointer: %p\n", &argv); } int main(int argc, char **argv) { printf("Argc Pointer: %p\n", &argc); printf("Argv Pointer: %p\n", &argv); printf("Size of &argc: %lu\n", sizeof (&argc)); …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.