valgrind

Like a surveillance camera on every malloc and free. Slower than normal execution (10× or so), but it catches bugs that would otherwise surface months later in production.

$ valgrind --leak-check=full ./myprog
...
definitely lost: 48 bytes in 2 blocks

Linux-native. On macOS use leaks or AddressSanitizer.