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 Pasul 1: Alocare memorie Folosești new pentru a aloca memorie: int* arr = new int[10]; alocă un vector dinamic de 10 întregi.
- 2 Pasul 2: Utilizare memorie Accesezi elementele ca într-un vector normal: arr[0] = 1; sau folosești pointeri pentru a parcurge.
- 3 Pasul 3: Eliberare memorie Folosești delete[] arr; pentru a elibera memoria alocată; neglijarea acestui pas duce la scurgeri de memorie.
- 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.