3. Definicje zmiennych i ich zasięg

3.2. Czas życia zmiennej

Pojęcie czasu życia zmiennej można zdefiniować następująco:

Czasem życia zmiennej nazywa się ten okres wykonywania programu, w trakcie którego zmienna istnieje w pamięci.

Czas życia zmiennej jest równy czasowi wykonania programu jedynie w przypadku zmiennych globalnych. Zmienne globalne są inicjowane przed uruchomieniem, kasowane po zakończeniu programu.

Zmienne lokalne są tworzone w momencie ich definicji, natomiast kasowane w momencie opuszczenia zasięgu w którym mogłyby być widoczne (a więc do nawiasu klamrowego zamykającego). Po skasowaniu zmiennej nie ma już możliwości odczytania jej zawartości. Zarządzanie czasem życia zmiennych statycznych jest w pełni automatyczne.

Zainteresowani mogą uruchomić poniższy programik – dzięki własnej klasie i jej konstruktorowi i destruktorowi informacje o tworzeniu i kasowaniu zmiennej będzie wyświetlana na ekranie.


#include <cstdlib>
#include <iostream>

using namespace std;

class CMoja {
public:
  CMoja()  { cout << "Tworze\n"; }
  ~CMoja() { cout << "Kasuje\n"; }
};

CMoja moja;

void testMoja() {
  cout << "W funkcji: \n";
  CMoja a;
  cout << "Teraz dostepna:\n";
}

int main(int argc, char *argv[]) {
  cout << "Przed funkcja: \n";
  testMoja();
  cout << "po funkcji: \n";
  cout << "przed definicja\n";
  CMoja b;
  cout << "koniec programu\n";
  system("PAUSE");
  return EXIT_SUCCESS;
}