A memory leak is heap memory you allocated and never released, with no pointer left to release it. Nothing crashes right away, so leaks are easy to miss. A long-running server just grows until the allocator or the operating system kills it.
The usual causes are a new with no matching delete, and an early return or a thrown exception that skips the cleanup. Overwriting the only pointer to a block leaks it too.
The fix in modern C++ is structural, not a matter of discipline. Store owned objects in unique_ptr, shared_ptr or a standard container, and their destructors free them on every exit path. For what still slips through, build with AddressSanitizer or run a leak checker. Both name the allocation site.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓