Sdílet prostřednictvím


Životnost

"Doba trvání" je období, během spuštění programu, ve kterém proměnné nebo funkce existuje.Doba skladování identifikátor určuje jeho životnosti.

Identifikátor deklarována s specifikátoru třídy úložištěstatické má dobu trvání statické úložiště. Identifikátory s dobou trvání statické úložiště (také nazývané "globální") mají dobu trvání programu úložišť a definovaná hodnota.Úložiště je vyhrazen a uložená hodnota je identifikátor je inicializováno pouze jednou před spuštěním programu.Identifikátor deklarována s externí nebo interní navázání má také doba skladování statické (viz navázání).

Identifikátor deklarované bez statické specifikátoru třídy úložiště má trvání automatického ukládání, pokud je deklarována uvnitř funkce.Identifikátor s dobou trvání automatického ukládání ("místní identifikátor") má úložiště a definovaná hodnota pouze v rámci bloku, kde je identifikátor definován nebo deklarována.Automatické identifikátor je přiděleno nové úložiště pokaždé, když program zadá bloku a ztratí své úložiště (a jeho hodnota) při program ukončí bloku.Identifikátory deklarován ve funkci, bez navázání také mít trvání automatického ukládání.

Následující pravidla určují, zda má identifikátor globální (statické) nebo životnost místní (automaticky):

  • Statické životnost mají všechny funkce.Proto existují na všechny časy při provádění programu.Identifikátory deklarované na vnější úrovni (to znamená všechny vnější blokuje v programu na stejné úrovni definice funkce) mají vždy globální životnost (statické).

  • Pokud místní proměnné inicializátor, proměnné je inicializován pokaždé, když je vytvořen (Pokud je deklarován jako statické).Parametry funkce mají také místní životnost.Můžete zadat globální životnost pro identifikátor v rámci bloku včetně statické specifikátoru třídy úložiště ve svém prohlášení.Jednou prohlášena za statické, proměnná zachová svou hodnotu z jedné položky bloku na další.

Ačkoli existuje identifikátor s globální životnost provádění zdrojový program (například externě deklarované proměnné nebo lokální proměnné deklarované pomocí statické klíčové slovo), nemusí být viditelné ve všech částech programu.Viz obor a viditelnost informace o viditelnosti a viz Třídy úložiště diskusi o specifikátoru třídy úložiště nonterminal.

Paměť lze rozdělit podle potřeby (dynamické), pokud například vytvořili využívání rutiny speciální knihovny malloc.Protože dynamické přidělování paměti používá knihovnu rutiny, nepovažuje část jazyka.Viz malloc fungovat Reference knihovny runtime.

Viz také

Koncepty

Životnost, oboru, viditelnost a navázání