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

  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • Anthony Cumia

    Anthony Cumi

    5 EYLÜL 2006
  • YEAH1TV

    YEAH1TV

    19 ŞUBAT 2009