Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему размер пустой структуры = 1 byte, без единого поля 
:(
    Опции темы
GSasha
Дата 10.4.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



интересно, что занимает 1 байт в совсем пустой структуре:

Код

#pragma pack(1)
struct test
{
};
#pragma pack()


Код

cout <<  sizeof test; // size of test = 1 ??? что это за байт? 


тем более, добавляя один WORD в даную структуру - sizeof выдает реальный размер WORDa, а не sizeof WORD + 1;
PM MAIL ICQ   Вверх
Alek86
Дата 10.4.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



помнится, где-то было написано, что для работы с массивами:

то есть для вычисления количества элементов в массиве используется алгоритм
Код

A mas[2];
int count = sizeof(mas) / sizeof(A)

для всех типов он одинаков, а для "нулевого" класса он был бы неприменим

это не единственная причина, но других я не помню


--------------------
user posted image    user posted image
PM MAIL   Вверх
Daevaorn
Дата 10.4.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(GSasha @  10.4.2008,  18:20 Найти цитируемый пост)
интересно, что занимает 1 байт в совсем пустой структуре:

Ничего не занимает. У двух инстансов структуры должны быть разные адреса, например, для работы с ними массивов.
PM MAIL WWW   Вверх
GSasha
Дата 10.4.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



Понятно, значит это защита компилятора от самого себя
PM MAIL ICQ   Вверх
archimed7592
Дата 10.4.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(GSasha @  10.4.2008,  17:57 Найти цитируемый пост)
Понятно, значит это защита компилятора от самого себя 

Это требование Стандарта.

Добавлено через 6 минут и 18 секунд
http://www.kuzbass.ru:8086/docs/isocpp/int...ml#intro.object
Цитата
-5- Unless it is a bit-field (class.bit), a most derived object shall have a non-zero size and shall occupy one or more bytes of storage.



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
GSasha
Дата 10.4.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



Спасибо, теперь все ясно
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0555 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.