This talk is an introduction to subtle programmings bugs (ones that don’t always cause your program to crash), how they arise, and how to use Valgrind’s memcheck tool to detect them in your code:
- access memory you shouldn’t (overrun/underun allocated blocks),
- use undefined values in such a way that your program depends on the results,
- overlap source and destination pointer in memcpy and related functions, and
- free memory incorrectly (don’t free, double free, free with wrong function).