Memory safety is a concern in software development that aims to avoid software bugs that cause security vulnerabilities dealing with random-access memory (RAM) access, such as buffer overflows and dangling pointers.
Computer languages such as C and C++ that support arbitrary pointer arithmetic, casting, and deallocation are typically not memory safe. There are several different approaches to find errors in such languages: see the Detection section below.
The Cyclone language uses a hybrid approach, including "fat pointers" (pointers that carry their metadata directly) and regions to give programmers some low-level control while still ensuring memory safety.
Most high-level programming languages avoid the problem by disallowing pointer arithmetic and casting entirely, and by enforcing tracing garbage collection as the sole memory management scheme.
A language could support even more uses of pointer arithmetic, casting, and deallocation without sacrificing memory safety by using automated theorem proving as a form of static code analysis. ESC/Java and D demonstrate two ways that programmers can declare their invariants in ways that can be understood by a theorem prover.
Read more about Memory Safety: Types of Memory Errors, Detection
Famous quotes containing the words memory and/or safety:
“Memory is like a purse,if it be over-full that it cannot shut, all will drop out of it. Take heed of a gluttonous curiosity to feed on many things, lest the greediness of the appetite of thy memory spoil the digestion thereof.”
—Thomas Fuller (16081661)
“There is no calamity which a great nation can invite which equals that which follows a supine submission to wrong and injustice and the consequent loss of national self-respect and honor, beneath which are shielded and defended a peoples safety and greatness.”
—Grover Cleveland (18371908)