Memorie & Referințe
Gestiunea memoriei
În C++, memoria este împărțită în două zone principale: stack (stivă) și heap (grămadă).
| Stack | Heap | |
|---|---|---|
| Alocare | Automată (la declarare) | Manuală (new/delete) |
| Eliberare | Automată (la ieșire din scope) | Manuală (delete) |
| Dimensiune | Limitată (câțiva MB) | Mare (GB) |
| Viteză | Rapidă | Mai lentă |
| Folosit pentru | Variabile locale, parametri | Alocare dinamică, obiecte mari |
// Stack — automat
int x = 5; // alocat pe stack, eliberat la }
int arr[1000]; // 4KB pe stack
// Heap — manual
int* p = new int(42); // alocat pe heap
int* arr2 = new int[1000000]; // 4MB pe heap — OK
delete p;
delete[] arr2; // eliberare obligatorie!Memory leak: Dacă uiți
delete, memoria rămâne ocupată pe toată durata programului. Folosește valgrind sau smart pointeri (unique_ptr) pentru a preveni leaks.