Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2010, 21:16   #1
Vali_T
Пользователь
 
Регистрация: 23.05.2008
Сообщений: 32
По умолчанию Записи, размер

Помогите пожалуйста разобраться, вопрос на тестировании:
Чему равен размер записи следующей записи:

f_format = record
format_name : string[8];
file_size : smallint;
end;

Почему, чем это определяется?
Vali_T вне форума Ответить с цитированием
Старый 16.09.2010, 08:10   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
чем это определяется?
Размером каждого из полей + выравнивание.
p51x вне форума Ответить с цитированием
Старый 16.09.2010, 10:05   #3
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

Код:
type
f_format = record
format_name : string[8]; //8 байт - данные + 1 байт длина
file_size : smallint; //2 байт
end;
sizeof(f_format) = 12

Код:
type
f_format = packed record
format_name : string[8];
file_size : smallint;
end;
sizeof(f_format) = 11

Второй "упакованная" запись. Без выравнивания. Легче, но медленнее.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки

Последний раз редактировалось Gambler; 16.09.2010 в 10:08.
Gambler вне форума Ответить с цитированием
Старый 16.09.2010, 11:35   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Если не ошибаюсь, с какой-то версии в Делфи все записи по умолчанию packed.
p51x вне форума Ответить с цитированием
Старый 17.09.2010, 15:11   #5
Vali_T
Пользователь
 
Регистрация: 23.05.2008
Сообщений: 32
По умолчанию

Спасибо, вроде разобралась.
т.е. packed выравнивает по 1 байту в секции, по количеству введенных данных,
а без - по 4 байта, тогда еще вопрос почему в первом примере sizeof(f_format) = 12?

Последний раз редактировалось Vali_T; 17.09.2010 в 15:38.
Vali_T вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер массива huzik Общие вопросы C/C++ 10 15.10.2009 18:15
размер массива nosuchathing Общие вопросы C/C++ 6 15.01.2009 11:40
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54
Размер поля БД kayman Общие вопросы Delphi 1 14.10.2007 21:43
размер пиксела studenth Общие вопросы C/C++ 4 24.09.2007 05:16