«memory-alignment» etiketlenmiş sorular

8
Bellek hizalamanın amacı
Kuşkusuz anlamıyorum. Diyelim ki 1 bayt uzunluğunda bir hafıza kelimesi olan bir hafızanız var. Hizalanmamış adreslerde olduğu gibi, tek bir bellek erişiminde tek bir bellek erişiminde (yani 4'e bölünemez) neden 4 bayt uzunluğunda bir değişkene erişemiyorsunuz?

16
Özel C ++ ayırıcılarının çekici örnekleri?
std::allocatorÖzel bir çözüm lehine hendek için gerçekten iyi nedenler nelerdir? Doğruluk, performans, ölçeklenebilirlik vb. İçin kesinlikle gerekli olan herhangi bir durumla karşılaştınız mı? Gerçekten akıllı örnekler var mı? Özel ayırıcılar her zaman çok fazla ihtiyaç duymadığım Standart Kütüphane'nin bir özelliği olmuştur. Ben sadece burada SO üzerinde varlıklarını haklı çıkarmak için …

4
Yapı hizalaması neden bir alan türünün ilkel veya kullanıcı tanımlı olmasına bağlıdır?
In Noda Zaman v2, biz nanosaniye çözünürlüğü taşınıyoruz. Bu, ilgilendiğimiz tüm zaman aralığını temsil etmek için artık 8 baytlık bir tamsayı kullanamayacağımız anlamına geliyor. Bu, beni Noda Time'ın (birçok) yapısının bellek kullanımını araştırmaya sevk etti ve bu da beni yönlendirdi. CLR'nin uyum kararındaki küçük bir tuhaflığı ortaya çıkarmak için. İlk …

4
Yığın değişkenleri GCC __özniteliği __ ((hizalı (x))) ile hizalı mı?
Takip koduna sahibim: #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]); } Ve şu çıktıya sahibim: 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac Adresi neden a[0]birden fazla değil 0x1000? Tam olarak ne __attribute__((aligned(x)))yapar? Bu açıklamayı yanlış mı anladım ? Gcc …

2
Argc ve argv 12 baytlarının adresleri neden birbirinden ayrılıyor?
Aşağıdaki programı bilgisayarımda çalıştırdım (Linux çalıştıran 64 bit Intel). #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)); printf("Size of …

1
Std yapmak için modern yaklaşım :: vektör hizalanmış bellek ayırmak
Aşağıdaki soru cevaplar eski ancak, ilgili ve kullanıcı gelen açıklama edilir Marc Glisse yeterince ele olabilir bu soruna 17 C ++ yana yeni yaklaşımlar olduğunu öne sürüldü. Hala tüm verilere erişirken, SIMD için düzgün çalışan hizalanmış bellek almaya çalışıyorum. Intel'de, kayan bir tür vektörü oluşturur ve boyutumu __m2568 kat azaltırsam, …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.