Sari la conținut
Modulul 3

Memorie și resurse

Stăpânește modelul de proprietate al C++ - de la indicatori bruti la pointeri inteligente și semantică de mișcare - pentru a scrie cod care nu se scurge niciodată.

Indicatori și referințe

  1. Indicatori: adrese, dereferențiere și aritmetică

    Înțelegeți pointerii ca adrese de memorie, învățați operatorii de adresă și dereferință, aritmetica pointerului în cadrul matricelor, corectitudinea constantă cu pointerii și când pointerii brute sunt încă adecvate în C++ modern.

  2. References: Lvalue, Rvalue & Pitfalls

    Explorați referințele lvalue și rvalue, înțelegeți categoriile de valori C++, aflați regulile de restrângere a referințelor și referințele de redirecționare și evitați erorile de referință suspendate.

  3. Dynamic Memory: new, delete & Their Dangers

    Learn how dynamic allocation works with new and delete, understand the dangers of memory leaks, double-free, and use-after-free, and discover why modern C++ should contain zero raw new/delete.

Indicatori inteligente

  1. std::unique_ptr: Exclusive Ownership

    Learn how std::unique_ptr provides zero-overhead exclusive ownership, how to use make_unique, custom deleters for C resources, and factory function patterns.

  2. shared_ptr, weak_ptr și grafice de proprietate

    Înțelegeți proprietățile partajate cu referințe numărate cu shared_ptr, întrerupeți ciclurile cu weak_ptr, aflați despre blocurile de control și aliasing și aflați când shared_ptr este alegerea greșită.

Mutare Semantică și RAII

  1. Mutare Semantică și std::move

    Înțelegeți problema pe care o rezolvă semantica mișcării, cum std::move este o distribuție (nu o mișcare), implementați constructori de mutare și alocarea de mutare și aflați de ce noexcept este critic pentru performanța containerului.

  2. Redirecționare perfectă și std::forward

    Înțelegeți de ce referințele rvalue numite sunt lvalues, aflați modelul canonic de redirecționare cu std::forward și vedeți cum emplace_back folosește redirecționarea variadică pentru a construi obiecte în loc.

  3. RAII: Modelul de resurse fundamentale

    Aflați RAII (Resource Acquisition Is Initialization) — modelul de bază C++ pentru gestionarea resurselor în condiții de siguranță pentru excepții. Implementați pachetele RAII, înțelegeți lock_guard și scoped_lock și aflați de ce tipurile RAII trebuie să fie doar pentru mișcare sau ref-contorizate.

Memorie avansată

  1. Dispunerea memoriei, alinierea și reprezentarea obiectelor

    Înțelegeți cerințele de completare a structurii și aliniere, optimizați ordinea membrilor pentru dimensiune, aflați despre liniile cache și distribuirea falsă și utilizați funcțiile C++20 precum [[no_unique_address]] pentru aspecte compacte.