Přeskočit na obsah
Modul 3

Paměť a zdroje

Model vlastnictví Master C++ – od nezpracovaných ukazatelů přes chytré ukazatele a sémantiku pohybu – k psaní kódu, který nikdy neunikne.

Ukazatele a reference

  1. Ukazatele: adresy, dereferencování a aritmetika

    Pochopte ukazatele jako adresy paměti, naučte se operátory adres a dereferencí, aritmetiku ukazatelů v polích, konstantní správnost s ukazateli a to, kdy jsou v moderním C++ stále vhodné nezpracované ukazatele.

  2. Reference: Lvalue, Rvalue & Pitfalls

    Prozkoumejte lvalue a rvalue reference, porozumějte hodnotovým kategoriím C++, naučte se pravidla srážení referencí a přeposílání referencí a vyhněte se visícím referenčním chybám.

  3. Dynamická paměť: nová, smazat a jejich nebezpečí

    Zjistěte, jak dynamická alokace funguje s novými a odstraněnými, pochopte nebezpečí úniků paměti, double-free a use-after-free, a zjistěte, proč by moderní C++ měl obsahovat nula raw new/delete.

Inteligentní ukazatele

  1. std::unique_ptr: Výhradní vlastnictví

    Zjistěte, jak std::unique_ptr poskytuje výhradní vlastnictví s nulovou režií, jak používat make_unique, vlastní odstraňovače pro prostředky C a vzory továrních funkcí.

  2. shared_ptr, slabý_ptr a grafy vlastnictví

    Pochopte sdílené vlastnictví počítané s referencí pomocí shared_ptr, cykly přerušení pomocí slabé_ptr, naučte se o řídicích blocích a aliasingu a zjistěte, kdy je shared_ptr špatnou volbou.

Sémantika pohybu a RAII

  1. Sémantika přesunu a std::přesun

    Pochopte problém, který řeší sémantika přesunu, jak std::move je přetypování (nikoli přesun), implementujte konstruktory přesunu a přiřazení přesunu a zjistěte, proč je noexcept kritický pro výkon kontejneru.

  2. Perfect Forwarding & std::forward

    Pochopte, proč jsou pojmenované odkazy rvalue lvalue, naučte se kanonický vzor předávání pomocí std::forward a podívejte se, jak emplace_back používá varadické předávání k vytváření objektů na místě.

  3. RAII: Vzor základního zdroje

    Learn RAII (Resource Acquisition Is Initialization) — the core C++ pattern for exception-safe resource management. Implement RAII wrappers, understand lock_guard and scoped_lock, and learn why RAII types must be move-only or ref-counted.

Pokročilá paměť

  1. Rozložení paměti, zarovnání a reprezentace objektů

    Pochopte požadavky na odsazení struktur a zarovnání, optimalizujte řazení členů podle velikosti, zjistěte o řádcích mezipaměti a falešném sdílení a používejte funkce C++20, jako je [[no_unique_address]] pro kompaktní rozvržení.