Fórum Diferenças Entre Estruturas #294944

09/09/2005

0

Gostaria de Saber qual a diferença entre a estrutura RECORD e PACKAGE RECORD...


Tiago Malveira

Tiago Malveira

Responder

Posts

09/09/2005

Ipc$

Não seria [b:d5655ca7f7]packed[/b:d5655ca7f7] record ?


Responder

Gostei + 0

09/09/2005

Tiago Malveira

[quote:b3bdb0017f=´ipc$´]Não seria [b:b3bdb0017f]packed[/b:b3bdb0017f] record ?[/quote:b3bdb0017f]
É isso mesmo...


Responder

Gostei + 0

09/09/2005

Rjun

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


Responder

Gostei + 0

09/09/2005

Massuda

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...
type
  TExemplo = record
    C: Byte;
    W: Word
    L: Longword;
  end;
...ocuparia um espaço mais ou menos assim na memória...
  | C | - | - | - |
  | W | W | - | - |
  | L | L | L | L |
...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...
  | C |
  | W | W |
  | L | L | L | L |
...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.


Responder

Gostei + 0

09/09/2005

Ipc$

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar