Die Größe der Datentypen (in Bit) ist nicht genau festgelegt |
Die Integerdatentypen bilden in Bezug auf ihre Größe folgende Reihe:
char <= short <= int <= longDer Datentyp char enthält mindestens 8 Bit.
Dies läßt aber viele Möglichkeiten offen:
sizeof(type) liefert die Größe in CeeByte, nicht EdvByte!
In einem CSIL64-System ist sizeof(char)==1, ..., sizeof(long)==1 !!!
Die Größe eines Datentyps type in Bit läßt sich so ermitteln:
|
|
Eine historische Tabelle zu Datentyp-Größen (Indian Hill style guide):
|
Die C-Speicherverwaltung |
C besitzt wie die meisten Programmiersprachen die Möglichkeit globaler und lokaler Variablen. Eine Besonderheit gegenüber älteren Versionen von Sprachen wie FORTRAN, PASCAL oder BASIC ist jedoch die Möglichkeit, Datenstrukturen variabler Größe zur Laufzeit anzulegen, zu verwenden, diese wieder freizugeben und den Speicherplatz wiederzuverwenden. Dies wird als dynamische Speicherverwaltung bezeichnet und mit den Funktionen malloc/calloc/realloc/free abgewickelt.
Als Programmierer steht man oft vor der Wahl, Speicher entweder lokal oder dynamisch anzulegen.
Lokaler Speicher:
|
Dynamischer Speicher:
|
Beide Verfahren unterschieden sich ganz wesentlich in vielerlei Hinsicht. Im allgemeinen ist die Variante 1 vorzuziehen, weil sie einfacher und schneller ist. Die Seite CeeStackKonzept beschäftigt mit diesem Thema im Detail.
Andererseits gibt es viele Situationen, wo die Variante 2 geeigneter ist, ein Problem zu lösen. Gerade C-Neulinge verwenden aber die Variante 2 viel zu häufig und laufen dann in Probleme (z. B. MemoryLeak).