Котовчанин
|
||||||
1 | ||||||
Размер структуры30.11.2016, 15:52. Показов 21612. Ответов 19
Метки нет (Все метки)
Всем доброго дня!
Не могу понять... Вот код.
Заранее спасибо!
1
|
30.11.2016, 15:52 | |
Ответы с готовыми решениями:
19
Размер структуры Размер структуры? Странный размер структуры Размер структуры KEYBOARD_ATTRIBUTES |
30.11.2016, 16:00 | 4 |
Я не спец, но думаю, как компилятор на память положит. Может есть какие прагмы чтобы влиять на его поведение в этих случаях. Можно погуглить, начав с "выравнивание полей структур".
Может у вас 32-разрядная система и компилятор под чары в структурах выделяет размер регистра - 4 байта.
1
|
Модератор
13727 / 10923 / 6480
Регистрация: 18.12.2011
Сообщений: 29,157
|
|
30.11.2016, 16:02 | 5 |
Выравнивание идет на границы 32 битного слова.
Поэтому после каждого из char останется по 3 байта. Итого: (1+3)+3*4+(1+3)=20 байт.
1
|
30.11.2016, 16:18 | 9 |
Тамика, раз пошла такая пьянка - попробуйте запилить структуру с 4 чарами подряд и двумя интами и посмотрите ее размер. А потом погуглите какую-нибудь packed - прагму или что там бывает, чтобы добиться ужатия первых четырех чаров в одно 32-битное слово.
1
|
Котовчанин
|
||||||
30.11.2016, 16:19 [ТС] | 10 | |||||
Практика подтвердила!
Простите, но... Энто што?..
0
|
30.11.2016, 16:21 | 11 |
Это я так называю любые волшебные мутаборы, которые могут указать компилятору определенное поведение, например ужимать/паковать поля структур для уменьшения размера памяти или транжирить байты ради скорости доступа.
0
|
Котовчанин
|
||||||
30.11.2016, 16:21 [ТС] | 12 | |||||
_Ivana, кажется, оно само это делает...
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
30.11.2016, 16:22 | 13 |
2
|
30.11.2016, 16:25 | 14 |
Значит у вас или по-умолчанию включены эти мутаборы, или это безмутаборное поведение по-умолчанию вообще Можно или копаться в этом, или забить. Но если забивать - то ни в коем случае не ковырять память выделенную под структуру по перекастованным указателям на чары, ожидая, что данные будут лежать вплотную
ЗЫ Как только мы ушли от ручного ассемблера к компиляторам, мы потеряли 2 важных вещи - управление временем выполнения и размещением данных в памяти. Променяли это на остальные плюшки и постепенно теряем контроль, передавая его искусственному интеллекту
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
30.11.2016, 16:30 | 15 |
Не оно само, а ты сама
Ты же сама расположила данные в структуре в оптимальном (для твоей платформы) порядке. А отключение выравнивания - это другое, это если ты данные расположила не в оптимальном порядке, но выравнивать компилятор их все равно не будет. Этим обычно пользуются для формирования всякого разного рода пакетов или заголовков, предназначенных для передачи по сети, записи в файлы и т.п. Есть и обратная сторона медали - прямой доступ к невыравненным данным обычно медленее, а на некоторых аппаратных платформах в принципе невозможен (будет аппаратное исключение). Поэтому лучше этим не баловаться без нужды
1
|
Котовчанин
|
||||||
30.11.2016, 16:34 [ТС] | 16 | |||||
DrOffset, а я пробовала и с трёмя чариками, и с двумя, и с одним.
А вот такая штука опять меня запутала... Почему если инт первый, то под чар выделяется 4 байта. Если чар один и первый - 1 байт?.. Расположение на позицию кратную 4 тут не котируется, потому что инт первый.
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
30.11.2016, 16:57 | 17 |
Потому что выравнивание зависит от типа, а относится к адресу.
Может быть проще будет пользоваться вот таким более строгим определением: Адреса всех данных размером 2n байт при n >= размеру машинного слова должны делиться на 2(размер машинного слова). Добавлено через 4 минуты Тамика, вот хороший материал по теме: http://konishchevdmitry.blogsp... -post.html
1
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
30.11.2016, 17:04 | 19 |
1
|
Котовчанин
|
|
30.11.2016, 17:05 [ТС] | 20 |
DrOffset, спасиииибо
0
|
30.11.2016, 17:05 | |
30.11.2016, 17:05 | |
Помогаю со студенческими работами здесь
20
Определить размер структуры Размер структуры с битовыми полями Увеличить указатель на размер адресуемой им структуры Как определить размер структуры и объединения? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации
В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
|
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии
В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
|
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации
В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
|
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику
Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
|
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику
В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
|
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера
Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
|
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды
В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
|
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике
В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
|
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование
В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
|
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике
В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
|
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации
В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
|
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира
В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
|