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:
“A man of sense, though born without wit, often lives to have wit. His memory treasures up ideas and reflections; he compares them with new occurrences, and strikes out new lights from the collision. The consequence is sometimes bons mots, and sometimes apothegms.”
—Horace Walpole (17171797)
“There was only one catch and that was Catch-22, which specified that a concern for ones own safety in the face of dangers that were real and immediate was the process of a rational mind.... Orr would be crazy to fly more missions and sane if he didnt, but if he was sane he had to fly them. If he flew them he was crazy and didnt have to; but if he didnt want to he was sane and had to.”
—Joseph Heller (b. 1923)