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. 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. 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. 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.

Mai multe din Programare