The OpenNET Project / Index page

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

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

"sizeof выдает неверный размер" 
Сообщение от Nik Искать по авторуВ закладки(??) on 25-Окт-05, 13:29  (MSK)
Есть некоторая структура, указателей не содержит. sizeof для этой структуры выдает, ну скажем, 32 байта, хотя реальный размер структуры меньше. Знаю, что в МС вижал Си есть такая штука как выравнивание, и когда этому выравниванию говоришь byte, то sizeof на мою структуру выдает верный размер. Что нужно сказать gcc (какую опцию включить или выключить), чтобы sizeof на структуру выдавал корректный размер?
В мане на gcc куча всяких алигнментов, какой нужен в моем случае, я так и не понял. Помогите плиз.
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "sizeof выдает неверный размер" 
Сообщение от Heil Искать по авторуВ закладки on 25-Окт-05, 13:40  (MSK)
>Есть некоторая структура, указателей не содержит. sizeof для этой структуры выдает, ну
>скажем, 32 байта, хотя реальный размер структуры меньше. Знаю, что в
>МС вижал Си есть такая штука как выравнивание, и когда этому
>выравниванию говоришь byte, то sizeof на мою структуру выдает верный размер.
>Что нужно сказать gcc (какую опцию включить или выключить), чтобы sizeof
>на структуру выдавал корректный размер?
>В мане на gcc куча всяких алигнментов, какой нужен в моем случае,
>я так и не понял. Помогите плиз.

https://www.opennet.ru/openforum/vsluhforumID9/4714.html

и не забывайте о следующем

между членами структуры(класса) могут быть промежутки в целях выравнивания
структура(класс) может иметь скрытые поля

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

2. "sizeof выдает неверный размер" 
Сообщение от Nik Искать по авторуВ закладки(??) on 25-Окт-05, 14:34  (MSK)
спасибо. будем думать.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "sizeof выдает неверный размер" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 25-Окт-05, 17:18  (MSK)
>спасибо. будем думать.

Может, поможет
#pragma pack()

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

4. "sizeof выдает неверный размер" 
Сообщение от horsh Искать по авторуВ закладки(??) on 20-Ноя-05, 21:11  (MSK)
>>спасибо. будем думать.
>
>Может, поможет
>#pragma pack()

А вы уверены, что не лучше переписать вашу программу так
чтоб она работала с неупакованными структурами?

Вы уже столкнулись с тем что такая программа не переносима
и пытаетесь эту непереносимость усугубить.

Кроме того, на современном железе такая программа может
работать существенно медленней чем вариант с нормальным
выравниванием. Например на SPARC невыровненный доступ
кидает хардварное исключение, которое обработается софтварно.

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

5. "sizeof выдает неверный размер" 
Сообщение от jd Искать по авторуВ закладки(??) on 21-Ноя-05, 00:22  (MSK)
А вам не кажется, что _почти месяц_ - это достаточный срок, чтобы не поднимать тему на самый верх, тем более обращаясь лично к человеку, который скорее всего уже давно забыл про свой вопрос?

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

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

6. "sizeof выдает неверный размер" 
Сообщение от horsh Искать по авторуВ закладки(ok) on 21-Ноя-05, 03:28  (MSK)
>А вам не кажется, что _почти месяц_ - это достаточный срок, чтобы
>не поднимать тему на самый верх, тем более обращаясь лично к
>человеку, который скорее всего уже давно забыл про свой вопрос?
>
>К вашему замечанию: бывают случаи, когда выравнивание данных использовать нельзя - например
>при работе с заданным форматом файла, корорый содержит невыровненные структуры...

Я обращаюсь, скорее, к тем людям которые придут читать эту нитку в будущем.
разумеется бывают случаи когда бинарный формат задан.
Тем не менее и в таких случаях можно написать переносимый код.

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


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

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




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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