Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 4
1

Размер структуры больше суммы размеров ее полей?

22.11.2012, 22:18. Показов 1295. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
Прошу помочь разобраться.
Дано - есть такой тестовый код, составленный для проверки подозрения, вынесенного в заголовок:
C++
1
2
3
4
5
6
7
8
9
10
11
    struct test_type
    {
        short t1;
        long  t2;
    };
    test_type test_var;
 
int main()
{
    return 0;
}
Запустив пошаговую отладку, в watch добавляю:
sizeof test_var - результат 8
sizeof test_var.t1 + sizeof test_var.t2 - результат 6

Как это объяснить и как с этим бороться? Подобная структура (но большего размера) создавалась для "бинарного" ввода/вывода в файл, но поле t2 при этом заполняется черте чем, а не ожидаемым значением...

P.S. проект создавался в Visual Studio2008
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2012, 22:18
Ответы с готовыми решениями:

Размер структуры больше чем сумма ее элементов
Здравствуйте! Давно не писал на языке Си. Сейчас возникла необходимость. Не могу найти ответ на...

Совместите объявление и инициализацию структуры. После инициализации структуры выполните изменение ее полей с последующи
Написать программу структурного описания каталога одной книги. ...

Размер картинки больше чем размер шапки
Всем привет!ребята,у меня размер картинки больше чем высота шапки.как мне сделать так чтобы...

Структуры: Вывести все танки с 1940-1950 г. чей калибр , больше 50 мм. или же просто больше 50
Названия структуры: Танки. Ввод данных такой: Названия Год выпуска Калибр Скорость ...

5
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.11.2012, 22:24 2
Цитата Сообщение от andrevor Посмотреть сообщение
как с этим бороться?
Бороться с этим так. Не читать (из файла) в память под стуктурой, и не записывать в файл память из под структуры. Чтение делать в именованные поля структуры, запись делать из именованных полей структуры. Иначе:
Цитата Сообщение от andrevor Посмотреть сообщение
поле t2 при этом заполняется черте чем, а не ожидаемым значением...
0
3 / 1 / 1
Регистрация: 20.11.2012
Сообщений: 6
22.11.2012, 22:29 3
http://habrahabr.ru/post/90580/ вот интересная статья на эту тему
1
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 4
22.11.2012, 23:21  [ТС] 4
Красиво...
Нечто подобное я и подозревал - но както не хотел верить в этакий... эээ.. ну не маразм, - такое принуждение к щастью. Ибо зачем обязательное выравнивание для x86?
Но вот помнится в свое время в разных "Трубо Паскакалях" была управляемая опция компилятора - выравнивать или нет. Конкретно в VC нет возможности отключить такую оптимизацию?
А то считывать 20-элементную (оригинальную) структуру по элементам както и заморочно, и не эстетично :-) И считать char-ным массивом в Си тоже не вариант - устанешь потом приведение типа расписывать.

Добавлено через 23 минуты
Лекарство, оказывается действительно есть, и буквально под рукой
Использование #pragma pack(push,1)... pack(pop)
0
Croessmah
22.11.2012, 23:29
  #5

Не по теме:

Цитата Сообщение от andrevor Посмотреть сообщение
А то считывать 20-элементную (оригинальную) структуру по элементам както и заморочно, и не эстетично :-)
да ну бросьте Вы =)

0
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 4
23.11.2012, 21:59  [ТС] 6
бросить я бы рад - но нужно нести
а эстетика в программировании по старому опыту играет весьма важную роль
изменилась структура - переписывай весь ввод-вывод, извращение, натурально

ЗЫ метод с командами препроцессора по моей ссылке работает, считывает из файла как надо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2012, 21:59

Увеличение размеров полей ввода при нажатии кнопки
При нажатии на первую кнопку на форму добавляется одна кнопка или поле ввода, а при нажатии на...

Создание структуры размеров одежды
Передо мной стоит задача сделать структуру размеров у каталога. Когда манагер заводит новый товар,...

Структуры, нумерация полей структуры
Добрый день, у меня есть задачка, она решена. Но меня попросили "предусмотреть нумерацию полей...

Автоподгонка размеров TImage под размер изображения
Здравствуйте. Можно ли сделать так, чтобы при изменении картинки в Image(по нажатию кнопки) ширина...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru