RAII primárně není a nikdy nebyl o uvolňování paměti.
RAII je o pouhém zavolání destruktoru, jakmile skončí obor platnost proměnné, která nese objekt.
Stačí špatně naimplementovat destruktor a memory leaky nebo resource leaky budou hvízdat jak kulky na frontě.
Samozřejmě, že s pomocí RAII a vhodných tříd lze memory leakům do značné míry zabránit. Na rozdíl od GC se stará nejenom o uklizení paměti, ale obecně o uklizení všech použitých zdrojů, které objekty používají.
Nicméně musí být objekty dobře implementovány.
RAII negantuje uklizení paměti, RAII garantuje pouze to, že budou korektně zavolány destruktory všech objektů, kterým končí obor platnosti. Nic víc.
To nic nemění na tom, že při vhodném stylu se v C++ programátor o uvolňování paměti starat nemusí.
Autor se zabývá vývojem kompilátorů a knihoven pro objektově-orientované programovací jazyky.
Přečteno 36 262×
Přečteno 25 412×
Přečteno 23 832×
Přečteno 20 213×
Přečteno 17 921×