Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - packed record
sk0r - So 10.08.08 13:10
Titel: packed record
Also, was bringt denn nun ein packed record eigentlich?
Wenn ich in einem Record zwei Integer-Member deklariert habe und sie größe mit sizeof
ausgebe, dann ist mit und ohne das packed Schlüsselwort der Record 8 Bytes groß.
mkinzler - So 10.08.08 13:21
Dann mach mal sus einem Integer ein Word
sk0r - So 10.08.08 13:33
Ja, das hat nichts gebracht.
GTA-Place - So 10.08.08 13:40
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Test1 = record A: Word; B: String; C: Char; end;
Test2 = packed record A: Word; B: String; C: Char; end; |
Nimm das und freue dich über 5 Byte Ersparnis :)
Hidden - So 10.08.08 13:47
Zur eigentlichen Frage: Was wird denn genau anders gemacht? Bringt es immer/nur Vorteile? Warum ist packed nicht der Standard-Record?
Chryzler - So 10.08.08 14:07
Bei einem "normalen" record werden die einzelnen Member so im Speicher ausgerichtet, dass sie immer an einer Speicherstelle stehen, die durch 4 teilbar ist. Dadurch wird der Zugriff darauf optimiert, allerdings entstehen dadurch eventuell Lücken bis zu 3 Bytes jeweils. Beim packed record werden alle Member so dicht wie möglich aneinander geschoben, allerdings ist dann der Zugriff auf manche Member geringfügig langsamer. So habs ich verstanden. :)
mkinzler - So 10.08.08 14:09
Wobei man das Alignment einstellen kann
sk0r - So 10.08.08 14:24
Delphi-Quelltext
1: 2: 3: 4:
| type Test1 = packed record A: Word; C: Char; end; |
ergibt packed 3 und unpacked 4.
Hidden - So 10.08.08 15:57
Also ist packed auf speicherplatz optimiert und normal auf Laufzeit, danke :think:
Delete - So 10.08.08 17:05
Kann man so nicht sagen. Packed stellt auch sicher, dass der Record noch gelesen werden kann, wenn ein anderes Alignment verwendet wird.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!