Pamięć alokowana dynamicznie jest zwalniana w dwóch przypadkach:
- Gdy proces, który daną pamięć wykorzystuje, został zakończony
- Gdy wyniknie to z kodu źródłowego programu
Można więc stwierdzić, że przydzielona pamięć w funkcji nie znika po wyjściu z niej - należy więc zawsze zwalniać pamięć samemu (w niektórych językach występuje tzw. garbage collector, który usuwa automatycznie nieużywaną pamięć, ale nie dotyczy to C/C++).