The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"struct:  откуда лишние байты?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"struct:  откуда лишние байты?"  
Сообщение от echo email(??) on 04-Июл-06, 17:33 
#include <iostream>

struct test {
      u_int64_t   a;
      int16_t     b;
};

int
main()
{
   cout << sizeof (test) << endl;
}

ВОПРОС:
когда я комментирую test::a вывод = 2.
когда комментирую  test::b вывод = 8

а когда оба в структуре вывод = 12!
она что, какое-то выравнивание делает?!
наверняка есть чаво по этой теме, кинте ссылочку, plz  

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "struct:  откуда лишние байты?"  
Сообщение от echo email(??) on 04-Июл-06, 17:34 
т.е. какую опцию где надо вставить, чтобы компилятор не оптимизировал по-своему?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "struct:  откуда лишние байты?"  
Сообщение от michelnok (??) on 04-Июл-06, 20:37 
>т.е. какую опцию где надо вставить, чтобы компилятор не оптимизировал по-своему?

struct __attribute__((packed)) test {
      u_int64_t   a;
      int16_t     b;
};

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "нашел ответ, может кому пригодится"  
Сообщение от echo email(??) on 04-Июл-06, 17:40 
#include <iostream>

#pragma pack (1)

struct test {
      u_int64_t   a;
      int16_t     b;

};

#pragma pack (4)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру