Hi James, Here are the (really bad and containing memory issues) programs described in this article. https://developers.redhat.com/blog/2021/04/23/valgrind-memcheck-different-ways-to-lose-your-memory You can compile them with: gcc -Wall -g -o definitely definitely.c gcc -Wall -g -o reachable reachable.c gcc -Wall -g -o possibly possibly.c gcc -Wall -g -o indirectly indirectly.c And then run valgrind on them with: valgrind --leak-check=full ./definitely valgrind --leak-check=full --show-leak-kinds=all ./reachable valgrind --leak-check=full --show-leak-kinds=all ./possibly valgrind --leak-check=full --show-leak-kinds=all ./indirectly A bit more background can be found in the valgrind Memcheck manual: https://valgrind.org/docs/manual/mc-manual.html#mc-manual.leaks Even more details can be found in this section: https://valgrind.org/docs/manual/mc-manual.html#mc-manual.machine --- Free Software and the start of Cygnus (part of Red Hat now): https://www.oreilly.com/library/view/open-sources/1565925823/ch07.html The GNU Operating System and the Free Software Movement: https://www.oreilly.com/library/view/open-sources/1565925823/ch06.html -- ELF https://en.wikipedia.org/wiki/Executable_and_Linkable_Format DWARF http://dwarfstd.org/doc/Debugging%20using%20DWARF-2012.pdf