Gracias por responder!
Claro, conozco Valgrind pero mi idea era (para un trabajo de la escuela) poder mostrarle con un throw que confirme que se liberó toda la memoria.
Desconozco si existe alguna manera de mostrar eso tal y como quieres pero la verdad me extraña que exista. Al final al que le importa que se libere la memoria no es al usuario sino al desarrollador y éste último tiene a su alcance herramientas externas para comprobar que la memoria está liberada ante cualquier finalización del programa.
¿Cómo puedes saber que no se liberó memoria y cuando se se liberó?
Cuando se habla de liberar memoria se hace referencia a la que se reserva de manera dinámica usando funciones como: malloc()/realloc()/calloc() (en C) o new() (en C++). Esta memoria tiene que ser liberada de forma manual con: free() (en C) o delete() (en C++).
Por ejemplo puedes usar herramientas como valgrind (en Linux) y ejecutar:
$ gcc free_memory.c -o free_memory
$ valgrind ./free_memory
Y se ejecutará tu programa de manera normal para después indicarte si ha quedado memoria no liberada:
==11393== Command: ./free_memory
==11393== HEAP SUMMARY:
==11393== in use at exit: 10 bytes in 1 blocks
==11393== total heap usage: 3 allocs, 2 frees, 2,058 bytes allocated
==11393==
==11393== LEAK SUMMARY:
==11393== definitely lost: 10 bytes in 1 blocks
==11393== indirectly lost: 0 bytes in 0 blocks
==11393== possibly lost: 0 bytes in 0 blocks
==11393== still reachable: 0 bytes in 0 blocks
==11393== suppressed: 0 bytes in 0 blocks
==11393== Rerun with --leak-check=full to see details of leaked memory
==11393==
==11393== For counts of detected and suppressed errors, rerun with: -v
==11393== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Como te indica ahí, puedes usar otros parámetros para la ejecución de valgrind para obtener más información.
La salida del mismo programa liberando la memoria dinámica con free():
==11457== HEAP SUMMARY:
==11457== in use at exit: 0 bytes in 0 blocks
==11457== total heap usage: 3 allocs, 3 frees, 2,058 bytes allocated
==11457==
==11457== All heap blocks were freed -- no leaks are possible
==11457==
==11457== For counts of detected and suppressed errors, rerun with: -v
==11457== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)