Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tasty_sock
131 / 130 / 2
Регистрация: 26.01.2010
Сообщений: 351
#1

Странный размер структуры - C++

16.02.2012, 12:57. Просмотров 527. Ответов 3
Метки нет (Все метки)

Привет.

Есть структура
C++
1
2
3
4
5
6
7
8
9
10
11
typedef struct t_ANDNonDirectionalBeacon
{
  unsigned long track_id;
  unsigned long id;
  char name[35];
  double lat;
  double lon;
  float frequency;
  char call_sign[10];
  char work_time[20];
} t_ANDNonDirectionalBeacon;
Почему sizeof(t_ANDNonDirectionalBeacon) равен 96, а не 93?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2012, 12:57     Странный размер структуры
Посмотрите здесь:

Размер структуры - C++
Всем доброго дня! Не могу понять... Вот код. struct T { char i; int a; int b; int c; char j;

Размер структуры? - C++
Здравствуйте, дорогие форумчане! Есть доп. зд - подсчитать размер структуры. Только я очень слабо понимаю где , что и как делать:wall: ...

Размер структуры KEYBOARD_ATTRIBUTES - C++
Пытаюсь портировать с c++ структуру KEYBOARD_ATTRIBUTES ( http://msdn.microsoft.com/ru-RU/library/windows/hardware/ff542326(v=vs.85).aspx )...

Увеличить указатель на размер адресуемой структуры - C++
помогите пожалуйта решить пару задач, задачи не сложные, но я не могу в них разобраться Проиллюстрировать возможности аддитивных...

Увеличить указатель на размер адресуемой им структуры - C++
Увеличить указатель на размер адресуемой им структуры. Буду очень признателен за помощь.

Размер структуры больше суммы размеров ее полей? - C++
Доброго времени суток. Прошу помочь разобраться. Дано - есть такой тестовый код, составленный для проверки подозрения, вынесенного в...

В файл с помощью структуры записать следующие данные: "название папки, ее размер, дата создания" - C++
Добрый день! Есть файл в нем с помощью структуры надо записать такие данные: "название папки,ее размер, и дата создания". После заполнения...

Определить размер структуры "вручную" - C++
есть структура struct table{ int nomer; string surname; string name; string otch; string adress; string poruch; ...

Ввести размер массива с клавиатуры и передать этот размер в конструктор - C++
Я создал массив объектов. И я хочу ввести размер этого массива с клавиатуры, и передать этот размер в конструктор, как мне это сделать? ...

Функция внутри структуры использует указатель, как поле этой структуры - C++
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл GlobalItems.h, где хранятся глобальные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
16.02.2012, 13:03     Странный размер структуры #2
Читай про выравнивание.

На архитектуре IA32 компилятор чаще всего выравнивает члены структур на границу, кратную 4-м байтам. Поэтому вместо 35 байт под name выделяется 36 (последний байт "пропадает" и будет недоступен - образуется "дырка"), а под call_sign - 12 вместо 10 ("дырка" в конце в 2 байта).
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
16.02.2012, 13:04     Странный размер структуры #3
Про выравнивание слышал? Подозреваю, что примерно так (по 4-х байтовой границе):
Код
typedef struct t_ANDNonDirectionalBeacon
{
 unsigned long track_id; 4
 unsigned long id;         4
 char name[35];           36
 double lat;                 8
 double lon;                 8
 float frequency;          4
 char call_sign[10];      12
 char work_time[20];    20
} t_ANDNonDirectionalBeacon;
tasty_sock
131 / 130 / 2
Регистрация: 26.01.2010
Сообщений: 351
16.02.2012, 13:05  [ТС]     Странный размер структуры #4
C++
1
2
3
4
5
6
7
8
9
10
11
typedef struct t_ANDNonDirectionalBeacon
{
  unsigned long track_id;
  unsigned long id;
  char name[35];
  double lat;
  double lon;
  float frequency;
  char call_sign[10];
  char work_time[20];
} __attribute((packed)) t_ANDNonDirectionalBeacon;
Спасибо.
Yandex
Объявления
16.02.2012, 13:05     Странный размер структуры
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru