Yeni char aslında bir sınıf türü için uyumlu bellek garanti ediyor mu? | Netgez.com
SORU
14 Mayıs 2012, PAZARTESİ


Yeni char aslında bir sınıf türü için uyumlu bellek garanti ediyor mu?

Olur ayrılırken bir tampon) new char[sizeof(T)] garantili için bellek ayrılamadı hangisi düzgün hizalanmış türü T, üyeler T onların doğal, uygulama tanımlı, hizalama (yani, değil kullanılan alignas sözcüğü değiştirmek için hizalama).

Bu garanti cevapları yapımı burada gördüm ama tamamen standart garanti geldiğinde nasıl emin değilim. Standart 5.3.4-10 temel gereksinimi verir: aslında new char[] max_align_t aynı hizada olmalıdır.

Ne kaçırıyorum alignof(T) max_align_t en büyük değeri geçerli bir uyum olacağını söylüyor. Gayet açık bence, ama bir yapı ortaya hizalama max_align_t en olmalı? Hatta nokta 3.11-3 diyor doğrultma işlemi desteklenmiyor olabilir genişletilmiş, böylece derleyici bir sınıf içinde hizalı bir türüdür kendi başına karar verebilir mi?

CEVAP
14 Mayıs 2012, PAZARTESİ


İfadeler new char[N] new unsigned char[N] garantili bellek yeterince herhangi bir nesne için uyumlu geri dönmek için. §5.3.4/10 "[...] Char ve işaretsiz karakter dizileri için, arasındaki fark yeni-ifade ve adresi tahsisat tarafından döndürülen sonuç fonksiyon sıkı temel ayrılmaz bir katı olacaktır uyum gereksinimi (3.11) büyük hayır olan herhangi bir nesne türü daha dizinin boyutu yaratılıyor. Ayırma Çünkü [ not: fonksiyonları depolama işaretçiler iade kabul edilir uygun temel ile herhangi bir nesne türü için hizalanmış hizalama, dizi ayırma bu kısıtlamayı havai verir hangi diğer nesneleri içine ayrılırken karakter dizilerinin yaygın bir deyim türleri sonra alınacaktır. —son not ]".

İstediğin raw ayırmak için ise elbette bakış biçimsel bir işaret: bellek, daha net söyleyebiliriz: operator new(N). Kavramsal olarak, new char[N] ; N char15* * N bayt ayırır oluşturur.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZÄ°RAN 2007
  • optionalinfo

    optionalinfo

    29 EKÄ°M 2005
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011