Informatică Programare

C++ pointeri si alocare dinamica

Pointerii și alocarea dinamică în C++ permit gestionarea memoriei în timpul execuției programului. Un pointer este o variabilă care stochează adresa unei alte variabile, iar alocarea dinamică folosește operatorii new și delete pentru a rezerva și elibera memorie. Aceste concepte sunt cruciale pentru structuri de date complexe precum liste înlănțuite.

Bazele pointerilor

  • Declarare și inițializare int* p; declară un pointer către int; p = &x; îl face să pointeze la adresa variabilei x, unde x este un int.
  • Dereferențiere *p accesează valoarea de la adresa stocată în p; de exemplu, dacă x=5 și p=&x, atunci *p este 5.
  • Aritmetica pointerilor Pointerii pot fi incrementați sau decrementați pentru a naviga prin tablouri; p++ mută pointerul la următorul element de tip int în memorie.

Alocare dinamică cu new și delete

  1. 1
    Pasul 1: Alocare memorie Folosești new pentru a aloca memorie: int* arr = new int[10]; alocă un vector dinamic de 10 întregi.
  2. 2
    Pasul 2: Utilizare memorie Accesezi elementele ca într-un vector normal: arr[0] = 1; sau folosești pointeri pentru a parcurge.
  3. 3
    Pasul 3: Eliberare memorie Folosești delete[] arr; pentru a elibera memoria alocată; neglijarea acestui pas duce la scurgeri de memorie.
  4. 4
    Pasul 4: Exemplu complet #include <iostream> int main() { int n = 5; int* p = new int[n]; for (int i = 0; i < n; i++) p[i] = i * 2; for (int i = 0; i < n; i++) std::cout << p[i] << ' '; delete[] p; return 0; }

Întotdeauna eliberează memoria alocată dinamic cu delete pentru a evita scurgerile.

Mai multe din Programare