![]() | This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
Program execution |
---|
General concepts |
Types of code |
Compilation strategies |
Notable runtimes |
|
Notable compilers & toolchains |
|
Memory corruption occurs in acomputer program when the contents of amemory location are modified due to programmatic behavior that exceeds the intention of the originalprogrammer or program/language constructs; this is termed as violation ofmemory safety. The most likely causes of memory corruption areprogramming errors (software bugs). When the corrupted memory contents are used later in that program, it leads either to program crash or to strange and bizarre program behavior. Nearly 10% of application crashes on Windows systems are due toheap corruption.[1]
Modern programming languages likeC andC++ have powerful features of explicit memory management andpointer arithmetic. These features are designed for developing efficient applications and system software. However, using these features incorrectly may lead to memory corruption errors.
Memory corruption is one of the most intractable class of programming errors, for two reasons:
Memory corruption errors can be broadly classified into four categories:
Manymemory debuggers such asPurify,Valgrind,Insure++,Parasoft C/C++test,AddressSanitizer are available to detect memory corruption errors.