Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Speicher vom Record falsch
Niko S. - Do 05.08.10 21:07
Titel: Speicher vom Record falsch
Hallo Delphianer,
Lasst mich doch mal euch etwas vorrechnen...:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| TTileDataRec = Record x: Byte; y: Byte; Tileset: Byte; End;
TTileRec = Record Layer: array[1..5] of TTileDataRec; Typ: Byte; Data1: LongInt; Data2: LongInt; Data3: LongInt; BlockDir: Byte; End; |
5*3 bytes = 15 + 1 + 4 + 4 + 4 + 1 = 29...
Computer sagt nein...
Für ihn sind das 32 bytes.
Wo liegt mein Fehler ich find den nicht :nixweiss:
Ich hab mich grad mal an nen altes Thema zurückerinnert.
Mit nem packed Record gehts.
Kanns mir einer erklären?
Moderiert von
Narses: Topic aus Dateizugriff verschoben am Do 05.08.2010 um 22:58
jaenicke - Do 05.08.10 21:37
Bei einem normalen Record werden zur Optimierung die Felder an 4-Byte jeweils ausgerichtet (Stichwort: 4-Byte-Alignment). Dadurch ist dazwischen immer etwas Platz, wenn du z.B. nur 1 Byte hast, aber der Zugriff ist schneller.
Bei einem packed Record wird jedes Byte ausgenutzt, so dass du die reale Größe hast. Genau dafür ist packed da.
Niko S. - Do 05.08.10 22:24
Okay das erklärt natürlich warum er 32 lieber mag als 29.
Dankeschön für die Erklärung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!