Definition
Plain language
A memory bug where a program keeps using a chunk of memory after it has been released, often leading to crashes or exploits.
As stated in the literature
A memory-safety vulnerability in which a pointer is dereferenced after the underlying heap allocation has been freed, frequently producing exploitable conditions in C/C++ systems.
Also called: use-after-frees
Why it matters: Use-after-frees are among the most common and dangerous bugs in C and C++ codebases, and a major motivation for memory-safe languages like Rust.
For example, freeing a struct holding a network connection and then accidentally writing to it later can corrupt unrelated memory or let attackers run their own code.