<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2602%3AFC24%3A13%3A1%3AE4F7%3A9065%3A0%3A1</id>
	<title>Vero - Wikipedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2602%3AFC24%3A13%3A1%3AE4F7%3A9065%3A0%3A1"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php/Special:Contributions/2602:FC24:13:1:E4F7:9065:0:1"/>
	<updated>2026-08-14T17:30:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=Memory_corruption&amp;diff=280993</id>
		<title>Memory corruption</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Memory_corruption&amp;diff=280993"/>
		<updated>2023-07-22T16:46:07Z</updated>

		<summary type="html">&lt;p&gt;2602:FC24:13:1:E4F7:9065:0:1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multiple issues|&lt;br /&gt;
{{refimprove|date=May 2016}}&lt;br /&gt;
{{Original research|date=June 2020}}&lt;br /&gt;
}}&lt;br /&gt;
{{Program execution}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory corruption&#039;&#039;&#039; occurs in a [[computer program]] when the contents of a [[Memory address|memory location]] are modified due to programmatic behavior that exceeds the intention of the original [[programmer]] or program/language constructs; this is termed as violation of [[memory safety]]. The most likely causes of memory corruption are [[Software bug|programming 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 to [[Heap (memory management)|heap]] corruption.&amp;lt;ref name=&amp;quot;verifier&amp;quot;&amp;gt;{{Cite web|last=Radich|first=Q.|last2=Sherer|first2=T.|last3=Sharkey|first3=K.|last4=Batchelor|first4=D.|last5=Kennedy|first5=J. T.|last6=Mabee|first6=D.|last7=Coulter|first7=D.|last8=Michael|first8=S.|date=28 April 2021|title=Application Verifier (Windows 7 and Windows Server 2008 R2 Application Quality Cookbook) - Win32 apps|publisher=Microsoft Developer Network|url=https://docs.microsoft.com/en-us/windows/win32/win7appqual/application-verifier|access-date=2022-02-09|language=en-us}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modern programming languages like [[C (programming language)|C]] and [[C++]] have powerful features of explicit memory management and [[Pointer (computer programming)|pointer arithmetic]]. These features are designed for developing efficient applications and system software. However, using these features incorrectly may lead to memory corruption errors.&lt;br /&gt;
&lt;br /&gt;
Memory corruption is one of the most intractable class of programming errors, for two reasons: &lt;br /&gt;
#The source of the memory corruption and its manifestation may be far apart, making it hard to correlate the cause and the effect.&lt;br /&gt;
#Symptoms appear under unusual conditions, making it hard to consistently reproduce the error.&lt;br /&gt;
&lt;br /&gt;
Memory corruption errors can be broadly classified into four categories:&lt;br /&gt;
&lt;br /&gt;
#Using [[uninitialized variable|uninitialized memory]]: Contents of uninitialized memory are treated as garbage values. Using such values can lead to unpredictable program behavior.&lt;br /&gt;
#Using non-owned memory: It is common to use pointers to access and modify memory. If such a pointer is a null pointer, [[dangling pointer]] (pointing to memory that has already been freed), or to a memory location outside of current stack or [[Heap (memory management)|heap]] bounds, it is referring to memory that is not then possessed by the program. Using such pointers is a serious programming flaw. Accessing such memory usually causes operating system exceptions, that most commonly lead to a program crash (unless suitable memory protection software is being used).&lt;br /&gt;
#Using memory beyond the memory that was allocated ([[buffer overflow]]): If an array is used in a loop, with incorrect terminating condition, memory beyond the array bounds may be accidentally manipulated. Buffer overflow is one of the most common programming flaws exploited by computer viruses, causing serious [[computer security]] issues (e.g. [[return-to-libc attack]], [[stack-smashing protection]]) in widely used programs. In some cases programs can also incorrectly access the memory before the start of a buffer.&lt;br /&gt;
#Faulty heap memory management: [[Memory leak]]s and freeing non-heap or un-allocated memory are the most frequent errors caused by faulty heap memory management.&lt;br /&gt;
&lt;br /&gt;
Many [[memory debugger]]s such as [[Purify (software)|Purify]], [[Valgrind]], [[Insure++]], [[Parasoft C/C++test]], [[AddressSanitizer]] are available to detect memory corruption errors.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Storage violation]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://www.proggen.org/doku.php?id=security:memory-corruption:start Memory Corruption Tutorial] An introduction to exploitation techniques and protection mechanisms&lt;br /&gt;
&lt;br /&gt;
[[Category:Software bugs]]&lt;br /&gt;
[[Category:Computer memory]]&lt;br /&gt;
[[Category:Computer security exploits]]&lt;/div&gt;</summary>
		<author><name>2602:FC24:13:1:E4F7:9065:0:1</name></author>
	</entry>
</feed>