Rolf B: Begriff erklären

Beitrag lesen

Hallo pl,

static und Scope haben miteinander nichts zu tun, wenn man die Quirks von C außer Acht lässt. Durch static wird die Lebensdauer bestimmt, d.h. es geht um die Frage: wann wird die Variable allociert und wie lange bleibt sie allociert. Das "Wie" der Allocierung kann man hier außer Acht lassen.

static bedeutet: Nur einmal, und dann bleibt sie bestehen. Wo sie allociert wird, auf dem Heap oder im Basic Service Set (.bss Segment), ist je Compiler/Interpreter unterschiedlich.

In Sprachen wie PHP lebt alles auf dem Heap, da gibt's statische Variablen als statische Eigenschaften von Klassen. Die leben solange wie die Klasse und werden als Teil der Klassendefinition verwaltet.

In Sprachen wie C# oder Java weiß ich nicht genau wie es funktioniert; da muss alles eine Klasse sein, und zumindest statische Konstruktoren werden nach Gusto der Runtime aufgerufen. Eine statische Variable vom Typ Object lebt als Objektreferenz in der Klasse (ob Heap oder BSS sei dahingestellt) und ihr Inhalt lebt auf dem Heap.

In C/C++ leben statische Variablen definitiv im BSS.

Rolf

--
sumpsi - posui - clusi