Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

record и packed record   Найти похожие ветки 

 
Alek_1   (2004-05-07 14:18) [0]

Чем отличается record от packed record?
И в каких случаях лучше использовть record, а в каких packed record?


 
Семен Сорокин ©   (2004-05-07 14:27) [1]

From Help:

By default, the values in a structured type are aligned on word or double-word boundaries for faster access. When you declare a structured type, you can include the reserved word packed to implement compressed data storage. For example,

type TNumbers = packed array[1..100] of Real;

Using packed slows data access and, in the case of a character array, affects type compatibility (for more information, see Memory management).


 
han_malign ©   (2004-05-07 14:45) [2]

на пальцах:
Project Options->Compiler->Record field alignment(1,2,4(,8{D7}))
или {$A+}, {$A-}, {$A1}, {$A2}, {$A4}, or {$A8}

type
  Rec = record
     b: byte;
     w: word;
  end;

для выравнивания 1, данные побайтово лежат - bww
2 - b0ww
4 - b000ww00
8 - b0000000ww000000
а теперь представь, что в одном модуле(скажем в dll) выравниване 1, в другом 4 - в лучшем случае будет неправильно прочитано w, в худшем(при записи)  ты вылезешь за границу структуры(неявное прямое приведение), запорешь "чужие" данные, и наверняка словишь AV...

packed - описывает структуру с выравниванием 1, независимо от опций компилятора

З.Ы.(в C это делается #pragma pack()/push/pop)


 
Alek_1   (2004-05-07 16:55) [3]

спасибо!


 
WebErr ©   (2004-05-07 17:00) [4]


> han_malign ©   (07.05.04 14:45) [2]

ИМХО самое грамотное объяснение, данное когда-либо по этому вопросу. :)


 
pasha_golub ©   (2004-05-07 17:03) [5]

Грамотное без спору, но если бы я его не знал, то не понял был. :-)

han_malign ©   (07.05.04 14:45) [2]
Respect



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
8-1078606910
Yuri Btr
2004-03-07 00:01
2004.05.23
Проблема с установкой ф-ии через BASS_ChannelSetSync


8-1078340694
3APA3A
2004-03-03 22:04
2004.05.23
Как экран сохранить в JPEG?


1-1084350344
glGLU
2004-05-12 12:25
2004.05.23
Menu


14-1083470203
Думкин
2004-05-02 07:56
2004.05.23
С днем рождения! 2 мая.


14-1083772753
Thor
2004-05-05 19:59
2004.05.23
Посещаете ли вы фитнес-клубы, качалки, спортзалы, etc.?