Informatică Programare
Alocarea dinamica a memoriei C++
Alocarea dinamică a memoriei în C++ permite rezervarea memoriei în timpul execuției programului, folosind operatorii new și delete. Exemplu: int* ptr = new int; *ptr = 25; delete ptr;. Este esențială pentru structuri de date de dimensiuni variabile.
Alocare și eliberare
- 1 Pasul 1: Alocare pentru tipuri simple Folosiți new Tip pentru a aloca memorie. int* p = new int; alocă spațiu pentru un întreg. *p = 42; atribuie valoarea.
- 2 Pasul 2: Alocare pentru array-uri new Tip[dimensiune] alocă un array dinamic. int* arr = new int[5]; arr[0] = 1;. Memoria rămâne alocată până la eliberare.
- 3 Pasul 3: Eliberare memorie Folosiți delete ptr; pentru tipuri simple și delete[] ptr; pentru array-uri. Neglijarea delete duce la scurgeri de memorie.
Exemple și bune practici
- Exemplu numeric double* d = new double; *d = 3.14; delete d;. Pentru array: char* s = new char[10]; strcpy(s, "test"); delete[] s;.
- Smart pointers În C++ modern, folosiți std::unique_ptr sau std::shared_ptr pentru gestionare automată. std::unique_ptr<int> up(new int(5)); eliberează automat la ieșirea din scop.
- Erori comune Alocare fără eliberare cauzează memory leak. Eliberare multiplă (double delete) duce la comportament nedefinit. Verificați dacă new a reușit (aruncă std::bad_alloc la eșec).
Preferă smart pointers pentru siguranță și eliberează întotdeauna memoria alocată dinamic pentru a evita scurgerile.