Fixing Memory Bugs in C

Tools and techniques for finding and fixing memory bugs in C

After you’ve learned the basics of the C programming language, including becoming familiar with pointers, you’re ready to start working on some real projects. Whether you’re writing your own code from scratch, or maintaining and extending code written by somebody else, you’ll quickly find that a major source of software defects in C programs is improper memory management.

What you’ll learn

  • Understanding memory management in C.
  • Finding software defects related to memory management in C.
  • Fixing memory bugs in C.
  • Setting up Windows Subsystem for Linux (WSL).

Course Content

  • Introduction –> 1 lecture • 1min.
  • Setup –> 1 lecture • 9min.
  • Memory Bugs –> 6 lectures • 1hr 10min.
  • Final Coding Challenge –> 1 lecture • 2min.

Fixing Memory Bugs in C

Requirements

  • Comfortable with C language syntax and familiar with pointers.

After you’ve learned the basics of the C programming language, including becoming familiar with pointers, you’re ready to start working on some real projects. Whether you’re writing your own code from scratch, or maintaining and extending code written by somebody else, you’ll quickly find that a major source of software defects in C programs is improper memory management.

Memory-related bugs can be difficult and extremely time-consuming to diagnose and fix without good tools. This course will introduce you to some tools and techniques for finding and fixing memory bugs in C programs, as well as teach the concepts behind those issues. It will cover:

  • Getting set up
    • Installing Windows Subsystem for Linux (WSL) and Ubuntu (if you’re a Windows user)
    • Installing gcc, make, and Valgrind
    • Integrating VS Code into a WSL workflow
  • Lessons on how to find and fix these kinds of memory bugs:
    • Uninitialized values
    • Invalid reads
    • Invalid writes
    • Invalid frees
    • Fishy values
    • Memory leaks

In each lesson, we will examine a sample C program and use the powerful open-source Valgrind tool to find its defects. For each kind of bug, there will also be a hands-on exercise for you to work through. At the very end there is a final coding challenge that will help you to review everything you’ve learned in the course.

You’ll need a solid start on the C language before you attempt this course, so if you’re new to C, I would highly recommend first working through one of the C for Beginners Udemy courses.

Get Tutorial