Memory Safety as Invariant Preservation¶
Memory safety means the program cannot access invalid memory - no buffer overflows, use-after-free, or dangling pointers. This can be achieved through runtime checks (bounds checking, GC) or compile-time enforcement (ownership, borrowing).
Tension Addressed¶
Safety vs. Flexibility; Convenience vs. Control
Recognizable As¶
Bounds checking on array access; null checks; "safe" vs. "unsafe" code blocks; memory-safe languages vs. systems languages debate; security vulnerabilities from memory unsafety
Canonical Sources¶
Jim, Morrisett, et al., "Cyclone: A Safe Dialect of C" (2002); Szekeres et al., "SoK: Eternal War in Memory" (2013)
Transfers To¶
Security engineering (whole categories of vulnerabilities), reliability engineering (crash prevention), any domain where invalid access must be prevented
Memory safety is not merely a language feature but a security and reliability property. The ongoing "memory safety" debate in systems programming reflects the tension between the performance benefits of manual memory management and the security benefits of guaranteed safety.