Adresa de memorie

Fiecare variabilă este stocată la o adresă de memorie specifică. Operatorul & returnează adresa unei variabile.

int x = 42;
cout << x  << endl;   // 42 (valoarea)
cout << &x << endl;   // ex: 0x7ffd5e2a1b3c (adresa)

int y = x;   // copiază valoarea
int& r = x;  // r este alias pentru x (aceeași adresă)

cout << &x << endl;   // aceeași adresă
cout << &r << endl;   // aceeași adresă ca x!
cout << &y << endl;   // adresă diferită

De ce contează adresele?

  • Pointerii stochează adrese de memorie
  • Pasarea prin referință/pointer evită copierea de date mari
  • Structurile de date dinamice (liste, arbori) folosesc adrese
  • Debugging: valgrind și AddressSanitizer detectează erori de memorie