AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

records im Speicher...

Ein Thema von SnuffMaster23 · begonnen am 29. Okt 2007 · letzter Beitrag vom 30. Okt 2007
Antwort Antwort
Muetze1
(Gast)

n/a Beiträge
 
#1

Re: records im Speicher...

  Alt 30. Okt 2007, 10:38
Nö, er richtet es nach seiner eigenen Verarbeitungsgrösse aus. Da wir (noch) ein 32 Bit Delphi nutzen, richtet er es an einer durch 4 teilbaren Adresse aus und sorgt innerhalb des Records dafür, dass die Elemente genauso aligned werden. Ab D6 kann man mit dem Compilerschalter sogar angeben, welches Alignment er verwenden soll: $ALIGN [2|4|8]. Grundsätzlich nutzt er aber erstmal eine durch 4 teilbare Adresse.

D5 und zuvor war nur $ALIGN ON|OFF möglich, wobei ON = 4 war. D1 als 16 Bit Compiler lasse ich mal aussen vor.


Zitat von Phoenix:
Zitat von Muetze1:
Sagen wir lieber, er richtet an DoubleWord-Grenzen aus.
Auch nicht ganz richtig. Der Compiler richtet die Datentypen anhand der Größe der Datentypen aus.

Wenn Du nur Bytes hast werden die nach Bytes ausgerichtet.

Hast Du z.B. ein Byte und einen LongInt würde er den LongInt am nächsten "LongInt" vom an Beginn ausrichten - also am 4. Byte. Du hättest dann 3 Byte unverwendeten Speicher.
"Byte", "unverw. Byte", "unverw. Byte", "unverw. Byte", "LongInt".
<--- 4 Byte = SizeOf(LongInt) --->, LongInt.
Dass würde nach deinem Beispiel bei folgendem:
Delphi-Quellcode:
  TRec = record
    i: longint;
    a: byte;
  end;
also eine Grösse von 5 bedeuten? Nein, leider nicht. Er ist 8 Byte gross. ABER: er richtet es immer nach dem grössten Element im Record aus. Weil z.B.:

Delphi-Quellcode:
  TRec = record
    i: double;
    a: byte;
  end;
  TRec2 = record
    i: byte;
    a: double;
  end;
beide 16 Byte gross sind. Würde jetzt anstatt Double dort Word stehen, dann wäre Word das grösste Element und er würde bei beiden Records auf eine Grösse von 4 Bytes kommen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz