Everything about Memory safety
State of being protected from memory access bugs
Memory safety is the state of being protected from various software bugs and security vulnerabilities when dealing with memory access, such as buffer overflows and dangling pointers. For example, Java is memory-safe because its runtime error detection checks array bounds and pointer dereferences. By contrast, programming languages like C, C++, and Fortran allow arbitrary pointer arithmetic with pointers implemented as direct memory addresses with no provision for bounds checking, making them memory-unsafe. Memory-unsafe code is typically found in low level programming, with higher level programming languages generally incorporating either garbage collection or static analysis to prevent such errors. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: Memory safetyA 5-minute orientation
- Skim a recent paper: On the importance of working memory in the driving safety field: A systematic reviewInfluential work since 2022
- Pick up a classic book: Federally chartered corporationThe most-reprinted book on the subject
- Read the landmark paper: RESEARCH NOTE, The Impact of Safety Warnings on Perception and MemoryCited 48 times
- Go sideways: Code sanitizerA closely related topic
- Go sideways: Memory corruptionA closely related topic
📖 Definitions
Noun Protection from software bugs and security vulnerabilities resulting from improper memory management, such as buffer overflows and dangling pointers.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
RESEARCH NOTE, The Impact of Safety Warnings on Perception and Memory
Memory safety without garbage collection for embedded applications
The Safety-Critical Java memory model formalised
Fat Pointers for Temporal Memory Safety of C
“Citizens Too”: Safety Setting Collaboration Among Older Adults with Memory Concerns
HeapCheck: Low-cost Hardware Support for Memory Safety
Keeping the memory alive, preventing memory loss that contributes to process safety events
Memory safety without runtime checks or garbage collection
🆕 Influential since 2022
On the importance of working memory in the driving safety field: A systematic review
cuCatch: A Debugging Tool for Efficiently Catching Memory Safety Violations in CUDA Applications
Real-Time Safety Assessment for Dynamic Systems With Limited Memory and Annotations
It Is Time to Standardize Principles and Practices for Software Memory Safety
Rust's Memory Safety Model: An Evaluation of Its Effectiveness in Preventing Common Vulnerabilities
📚 Books worth reading
- 📕Federally chartered corporationUnited States. General Accounting Office. Accounting and Information Management Division · 1998
- 📕[Gasoline motor-boat for customs service at Corpus Christi, Texas.]United States. Congress. House. Committee on Appropriations · 1876
Even if the Light ForgetsYs Goldt · 2026- 📕Roadside memorialsJennifer Clark · 2007
- 📕See you in the streetsRuth Sergel · 2016
- 📕[Amending section of Revised Statutes on regulation of steam vessels.]United States. Congress. Senate. Committee on Commerce
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Code sanitizer A code sanitizer is a programming tool that detects bugs in the form of undefined or suspicious behavior by a compiler inserting instrumentation code at…
- Memory corruption Memory corruption occurs in a computer program when the contents of a memory location are modified due to programmatic behavior that exceeds the intention…
- Segmentation fault In computing, a segmentation fault (often shortened to segfault) or access violation is a failure condition raised by hardware with memory protection,…
- Bounded pointer In computer science, a bounded pointer is a pointer that is augmented with additional information that enable the storage bounds within which it may point…
- Cyclone (programming language) The Cyclone programming language was intended to be a safe dialect of the C language. It avoids buffer overflows and other vulnerabilities that are possible…
- Null pointer In computing, a null pointer (sometimes shortened to nullptr or null) or null reference is a value indicating that the pointer or reference does not refer…
- Bounds checking In computer programming, bounds checking is any method of detecting whether a variable is within some bounds before it is used. It is usually used to ensure…
- Dangling pointer Dangling pointers and wild pointers in computer programming are pointers that do not point to a valid object of the appropriate type. These are special…