![]() |
|
Модераторы: bsa |
![]()
|
|
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: 2 Всего: 7 |
как определяется размер таких типов данных как структура и класс?
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
или вопрос не про то? |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: 2 Всего: 7 |
немного не то.... хотелось знать из чего состоит размер??? что он из себя представляет? размер максимального элемента или же размер суммы всех элементов структуры/класс
|
|||
|
||||
| MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
| susanin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: 2 Всего: 7 |
хотелось знать из чего состоит размер??? что он из себя представляет? размер максимального элемента или же размер суммы всех элементов структуры/класс
почему две структуры с одинаковыми данными имеют разный размер?? пример
выдает размер 16, а структура с теми же переменными, но расположенными в другом порядке,
уже дает в результате 24.... не понимаю! |
||||
|
|||||
| MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
# 5, susanin - Используй то, что я тебе написал, и будет строгий контроль в указанном порядке!
# Result:
sizeof(TEST2) = '13' byte. Это сообщение отредактировал(а) MuForum - 8.3.2008, 01:13 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
| nickless |
|
||||||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 2 Всего: 181 |
susanin, размер - это сумма размеров элементов + выравнивание. Выравнивание (alignment) нужно для повышения скорости чтения/записи данных в памяти.
В твоих примерах выравнивание похоже = 8, т.е. в памяти эти структуры выглядят примерно так ([ ] = 1 байт):
Как оно действительно расположено в памяти зависит от компайлера. -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||||||
|
|||||||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 7 Всего: 60 |
||||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
pragma это конечно хорошо, но если речь зайдет о компиляторе gcc ? Что ж это получается sizeof полностью бесполезен ?
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 2 Всего: 207 |
дополню скорость повышается засчет сокращения количества кэш-промахов (ни одно из полей структуры или сам объект структуры (размером меньше размера строки кэша) не может одновременно располагаться в двух строках кэша) он является элементом (только неявным) а в чем проблема? sizeof возвращает реальный размер объекта зачем беспокоиться о выравнивании? а если уж надо беспокоится, то скорее всего кроссплатформенность здесь уже не уместна если уж сильно надо, то GCC поддерживает #pragma pack(...) для совместимости с Win32 Это сообщение отредактировал(а) MAKCim - 8.3.2008, 10:29 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: 2 Всего: 7 |
со структурой понятно, а что насчет класса? как в нем определяется?
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: 2 Всего: 7 |
всем спасибо! за помощь! теперь буду знать!
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |