Autor Beitrag
CarpeDiem
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 128

WIN XP
Borland C++ 2002, CodeGear C++ 2007, C# (VS 2008)
BeitragVerfasst: Di 09.12.08 19:16 
Hallo,
eine kleine Anfängerfrage. Wieviel Speicherplatz braucht eine Integer(eigentlich int16 von früher) unter Win XP. Dachte immer, daß Win XP eine 32bit-Architektur hat und deshalb auch für int16 32bit reserviert. Weiß jemand was genaues?
Vielen Dank.

_________________
Stefan - Carpe Diem
Es ist keine Schande zu fallen, eine Schande ist nur nicht wieder aufzustehen
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 09.12.08 19:29 
Das hat mit Windows nix direkt zu tun sondern mit der Speicherverwaltung des Programms. Bei Records nutzt Delphi z.B. normalerweise 4 Byte Alignment, es sei denn man schreibt packed record, was alles hintereinander in den Speicher zwingt.

Grundsätzlich kannst du auf Assemblerebene ja entweder ein komplettes 32-Bit Register ansprechen oder nur einen Teil davon. Ein normaler Wert vom Typ Integer hat 32 Bit.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 10.12.08 09:30 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Bei Records nutzt Delphi z.B. normalerweise 4 Byte Alignment, es sei denn man schreibt packed record, was alles hintereinander in den Speicher zwingt.

Was hat die Ausrichtiung von Records jetzt mit seiner Frage zu tun? Wenn ich ein Integer in ein Record packe brauch er imme rnoch seine datentypgröße, egal wie das Alignment aussieht.

Die Frage ist nicht ganz so leicht zu beantworten und ich bin mir da auch immer unsicher. Ein Delphi Integer ist immer so groß wie die zugehörige Architektur. Spricht unter 32-Bit ist er 32 Bit groß und unter 64-Bit 64 Bit. Es gibt aber noch Ganzzahltypen, die eine feste Größe haben, wie zum Beispiel LongInt. Ein LongInt ist immer 32 Bit groß, egal auf was für einen System. Wie sich die unterschiedlichen Datentypen in den unterschiedlichen Programmiersprachen verhalten, musst du der Dokumentation entnehmen.