Lebensdauer
„Lebensdauer“ ist der Punkt während der Ausführung eines Programms, in dem eine Variable oder eine Funktion vorhanden ist.Die Speicherung dauer des Bezeichners bestimmt seine Lebensdauer.
Ein Bezeichner, der dem *Speicherklassenspezifizierer *static deklariert wird, statische dauer Speicher verfügt.Bezeichner der statisches Speicher dauer (auch als“ global „) Speicher und einen definierten Wert für die Dauer des Programms.Der Speicher wird reserviert und der gespeicherte Wert des Bezeichners wird nur einmal vor Programmstart initialisiert.Ein Bezeichner, der mit externer Bindung verfügt interner oder deklariert wird, statische Speicher auch dauer (siehe Bindung).
Ein Bezeichner, der ohne den static Speicherklassenspezifizierer deklariert wird, ist die automatische Speicherung dauer, wenn sie innerhalb einer Funktion deklariert ist.Ein Bezeichner mit automatischer Speicherung dauer „(ein lokaler Bezeichner“) weist Speicher und einen definierten Wert nur innerhalb des Blocks, in dem der Bezeichner definiert oder deklariert wird.Ein automatischer Speicherung neuer zugeordneter Bezeichner ist jedes Mal, wenn das Programm diesen Block wechselt. Außerdem verliert den Speicher (und den Wert), wenn das Programm beendet wird der Block.Die Bezeichner, die in einer Funktion ohne Bindung deklariert haben auch die automatische Speicherung dauer.
Die folgenden Regeln geben an, ob ein Bezeichner (statisch) globale oder lokale (automatische) Lebensdauer verfügt:
Alle Funktionen sind statische Lebensdauer.Deshalb sind sie jederzeit während der Programmausführung.Die Bezeichner, die auf der externen Ebene deklariert sind (d. h. außerhalb aller Blöcke im Programm auf derselben Ebene von Funktionsdefinitionen) haben immer global (statischen) Lebensdauer.
Wenn eine lokale Variable einen Initialisierer aufweist, wird die Variable initialisiert, wenn sie erstellt wird (es sei denn, sie als staticdeklariert ist).Funktionsparameter verfügen auch über lokale Lebensdauer.Sie können globale Lebensdauer eines Bezeichners in einem Block angeben, indem Sie den static Speicherklassenspezifizierer in seiner Deklaration einschließen.Ein deklariertes staticdie Variable legt seinen Wert aus einem Eintrag des Blocks folgendermaßen fest.
Obwohl ein Bezeichner mit einer globalen Lebensdauer, die während der Ausführung des Quellprogramms (z. B. eine extern deklarierte Variable oder eine lokale Variable deklariert mit dem static-Schlüsselwort) vorhanden ist, ist es möglicherweise nicht in allen Teilen des Programms sichtbar.Weitere Informationen dazu finden Sie unter Bereich und Sichtbarkeit und Sichtbarkeit finden Sie unter Speicherklassen für eine Diskussion über den Nicht-Terminal Speicherklassenspezifizierer .
Speicherplatz kann nach Bedarf dynamisch) zugeordnet sind (wenn er durch die Verwendung Spezialbibliothek routinen wie mallocerstellt wird.Da dynamische Speicherbelegung routinen Bibliothek verwendet, gilt es nicht als Teil der Sprache.Zeigen Sie die malloc-Funktion im Laufzeitbibliotheks-Verweis.