Programmiersprache Pascal

Ermittlung des Speicherbedarfs von Datentypen

Mitunter ist von Interesse, wieviel Speicherplatz für die Ablage bestimmter Daten benötigt wird. Für eine ganze Reihe von Datentypen ist der Speicherbedarf systemabhängig.

Von Bedeutung sind diese Angaben gegebenenfalls für Ein- und Ausgabeoperationen, für die ein Pufferbereich bereitgestellt werden soll. Zum Beispiel für die Arbeit mit Records kann es angenehm sein, die erforderliche Größe des Pufferbereichs dynamisch zur Laufzeit zu ermitteln.


Standard Pascal, Extended Pascal

Es sind keine Mittel zur Ermittlung des Speicherbedarfs von Datentypen vorgesehen.

Viele Systeme stellen aber - mit kleinen Unterschieden - die Funktion SizeOf bereit.


Pascal++

Verwendet werden kann die Funktion SizeOf:

  laenge := SizeOf(typ);           { VAR laenge : INTEGER; }
typ ist der Bezeichner eines beliebigen Datentyps.


Turbo Pascal, XL Pascal, Gnu Pascal

Verwendet werden kann die Funktion SizeOf:

  laenge := SizeOf(typ);           { VAR laenge : INTEGER; }
  laenge := SizeOf(variable);
typ ist der Bezeichner eines beliebigen Datentyps.
variable ist der Bezeichner einer Variablen mit beliebigen Datentyp.


Beispiel:

  PROGRAM size_of(OUTPUT);

  TYPE rec = RECORD
               x, y, z : REAL;
             END;
       prec = ^rec;

       typ = ( int, byt );
       union = RECORD
                 CASE typ OF
                   int : ( i : INTEGER );
                   byt : ( b : BYTE );
               END;

  BEGIN
    Writeln('REAL  ', SizeOf(REAL));
    Writeln('rec   ', SizeOf(rec));
    Writeln('prec  ', SizeOf(prec));
    Writeln('typ   ', SizeOf(typ));
    Writeln('union ', SizeOf(union));
  END.
Die Testergebnisse weisen auf die Bedeutung der Funktion hin:
          Pascal++    XL Pascal    Gnu Pascal    Turbo Pascal
  REAL       8           8            8             6
  rec       24          24           24            18
  prec       4           8            4             4
  typ        1           1            4             1
  union      4           4            4             2
Bemerkung: In XL Pascal und in Gnu Pascal existiert kein vordefinierter Datentyp BYTE.



P. Böhme, 29.08.1996