new și delete

new alocă memorie pe heap și returnează un pointer. delete eliberează acea memorie.

new_delete.cpp
// Alocare unui singur element
int* p = new int(42);
cout << *p << endl;  // 42
delete p;            // eliberare
p = nullptr;         // bună practică

// Alocare array
int n = 10;
int* arr = new int[n];
for (int i = 0; i < n; i++) arr[i] = i * i;
delete[] arr;  // [] pentru array!

Smart pointeri (C++11 — recomandat)

#include <memory>
auto p = make_unique<int>(42);  // eliberat automat
cout << *p << endl;              // 42
// nu ai nevoie de delete!
În C++ modern, preferă std::unique_ptr și std::shared_ptr în locul pointerilor raw. Gestionează automat memoria și previn memory leaks.