Diferenças Entre Estruturas
Gostaria de Saber qual a diferença entre a estrutura RECORD e PACKAGE RECORD...
Tiago Malveira
Curtidas 0
Respostas
Ipc$
09/09/2005
Não seria [b:d5655ca7f7]packed[/b:d5655ca7f7] record ?
GOSTEI 0
Tiago Malveira
09/09/2005
[quote:b3bdb0017f=´ipc$´]Não seria [b:b3bdb0017f]packed[/b:b3bdb0017f] record ?[/quote:b3bdb0017f]
É isso mesmo...
É isso mesmo...
GOSTEI 0
Rjun
09/09/2005
Tiago
Veja se esses links te ajudam.
http://www.activedelphi.com.br//modules.php?op=modload&name=XForum&file=viewthread&fid=4&tid=2048&orderdate=DESC
http://forum.clubedelphi.net/viewtopic.php?t=62617
Veja se esses links te ajudam.
http://www.activedelphi.com.br//modules.php?op=modload&name=XForum&file=viewthread&fid=4&tid=2048&orderdate=DESC
http://forum.clubedelphi.net/viewtopic.php?t=62617
GOSTEI 0
Massuda
09/09/2005
O [b:310c3a7af0]packed[/b:310c3a7af0] tem relação sobre como o compilador irá dispor os elementos de um [b:310c3a7af0]record[/b:310c3a7af0] na memória.
Quando o packed não é usado, o compilador dispõe os elementos do record na memória de modo que o endereçamento desses elementos por parte do processador seja mais eficiente. Num processador 32 bits é mais eficiente ter os dados em endereços que sejam múltiplo de 4. Assim, um record......ocuparia um espaço mais ou menos assim na memória......ou seja, ocuparia ao todo 12 bytes.
Quando packed é usado, você está pedindo explicitamente ao compilador para não tentar otimizar o acesso aos elementos do record, o que faz com que o compilador disponha os elementos do record na memória sem inserir bytes adicionais para obter um endereçamento mais eficiente; o record TExemplo ficaria assim......e ocuparia ao todo 7 bytes de memória.
Normalmente usa-se packed nos records que representam estruturas de dados que são armazenadas em disco ou em estruturas de dados usadas em comunicação de dados.
Geralmente não há necessidade de usar packed para estruturas de dados que são usadas apenas em tempo de execução.
Quando o packed não é usado, o compilador dispõe os elementos do record na memória de modo que o endereçamento desses elementos por parte do processador seja mais eficiente. Num processador 32 bits é mais eficiente ter os dados em endereços que sejam múltiplo de 4. Assim, um record...
type TExemplo = record C: Byte; W: Word L: Longword; end;
| C | - | - | - | | W | W | - | - | | L | L | L | L |
Quando packed é usado, você está pedindo explicitamente ao compilador para não tentar otimizar o acesso aos elementos do record, o que faz com que o compilador disponha os elementos do record na memória sem inserir bytes adicionais para obter um endereçamento mais eficiente; o record TExemplo ficaria assim...
| C | | W | W | | L | L | L | L |
Normalmente usa-se packed nos records que representam estruturas de dados que são armazenadas em disco ou em estruturas de dados usadas em comunicação de dados.
Geralmente não há necessidade de usar packed para estruturas de dados que são usadas apenas em tempo de execução.
GOSTEI 0
Ipc$
09/09/2005
Outro caso de packed record é quando vc tem que alimentar uma estrutura através de ponteiros por não saber que tipos e quantidade de campos ela possui.
GOSTEI 0