Hlavní navigace

Názor k článku Nové Ubuntu má vážné problémy s grafikami Intel od D.A.Tiger - Asi si pořád nerozumíme. Jednak kolega "novačisko" četl-li...

  • Článek je starý, nové názory již nelze přidávat.
  • 20. 5. 2009 15:10

    D.A.Tiger
    Asi si pořád nerozumíme. Jednak kolega "novačisko" četl-li jsem jeho příspěvky pozorně, navrhoval jako součást svého modelu vyloučení statických proměnných. A jednak uvažme následující (jen příkladový !!!) kód :
    class X;
    
    class A {
      X *my_object;
    
    public :
      A( ) { my_Object = new X; }
      ~A( ) { }
    };
    
    
    Takže pokud si dobře vzpomínám tak standarty pro C++ jasně říkají, že destruktor třídy a bude volán, vždy, když bude instance této třídy odstraněna z paměti. Ale už nikde neříkají nic o tom, že se C++ musí automaticky postarat o odstraňovaní jejich prvků. Což tedy znamená, že při vytvoření instance třídy A se zavolá konstruktor, který alokuje paměť pro vnořenou instanci my_Object typu X. Při odstranění třídy A je sice zaručeno, že se musí zavolá její destruktor, ale už se nebude automaticky starat o proměnou my_Object !!! Jinými slovy tohle je už na vaše starost. Pokud nezavoláte v destruktoru operátor delete, aby "uklidil" proměnou my_Object, tak vám zůstane v paměti. Ale nejen to, vy k ní už nemáte (v tomto konkrétním případě) korektní přístup... A přesně toto mám celou dobu na mysli.