SORU
29 Kasım 2010, PAZARTESİ


Yapı dolgu ve ambalaj yapısı

Düşünün:

struct mystruct_A
{
   char a;
   int b;
   char c;
} x;

struct mystruct_B
{
   int b;
   char a;
} y;

Yapı büyüklüğü 12 ve 8, sırasıyla.

Bu yapı, doldurma ya da ambalaj?

Zaman doldurma veya ambalaj gerçekleşir?

CEVAP
29 Kasım 2010, PAZARTESİ


Doldurmaaligns" sınırları adresi, int üye 32-bit platform. 5 ** olan uzaklıklar, derdi "doğal üye yapısı Doldurma varsayılan olarak açıktır. Bu ekler aşağıdaki "boşluk" içine ilk yapısı:

struct mystruct_A {
    char a;
    char gap_0[3]; /* inserted by compiler: for alignment of b */
    int b;
    char c;
    char gap_1[3]; /* -"-: for alignment of the whole struct in an array */
} x;

AmbalajGCC altında dolgu yapmaktan derleyici engeller diğer taraftan - bu açıkça talep edilmelidir - __attribute__((__packed__)), aşağıdaki:

struct __attribute__((__packed__)) mystruct_A {
    char a;
    int b;
    char c;
};

boyut yapı üretecektir 32-bit mimarisi üzerinde 6.

- Tarafsız bellek erişimi olsa bir not izin mimarileri yavaş (x 86 ve amd64 gibi), açıkça yasaktırsıkı bir uyum mimarileriSPARC gibi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dopelives

    Dopelives

    30 Temmuz 2009
  • LAHWF

    LAHWF

    5 Kasım 2009
  • max2sims2

    max2sims2

    19 Kasım 2008