headerphoto

Dynamická alokace paměti

Jazyk C++ nabízí nové operátory new pro alokaci a delete pro uvolnění paměti. Operátor new zná třídu objektu, automaticky volá její konstruktor a také vrací příslušný typ ukazatele. Není třeba přetypovávat, během přiřazení probíhá typová kontrola. Uvolnění paměti, která byla alokována operátorem new, se musí provést pomocí operátoru delete. Tento operátor automaticky volá destruktor třídy.

Za klíčové slovo new píšeme označení typu proměnné, kterou chceme alokovat. Operátor vybere z volné paměti potřebné místo a vrátí ukazatel na ně. Pokud se operace nepodaří, vrátí se hodnota 0, což nepředstavuje platnou adresu.

  double *prom;
  prom = new double;
  if (!prom) Chyba( );      //jestliže se alokace nezdařila, voláme funkci Chyba()

  double *prom1;
  prom1 = new double(5.23);  //vytvoření s inicializací
  if (!prom1) Chyba( );

  Vozidlo *x, *y;
  x = new Vozidlo();         //použití new pro třídu Vozidlo
  y = new Vozidlo("1T1 7777", 2000);    //můžeme použít kterýkoliv konstruktor
  
  int *pole;
  pole = new int[100];      //u pole nemůžeme použít inicializaci

  delete prom;              //uvolnění paměti
  delete prom1;
  delete pole;