<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8</id>
	<title>Динамическое распределение памяти - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8&amp;action=history"/>
	<updated>2026-06-29T22:02:23Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8&amp;diff=4531&amp;oldid=prev</id>
		<title>Patarakin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8&amp;diff=4531&amp;oldid=prev"/>
		<updated>2022-10-19T07:30:50Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 10:30, 19 октября 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8&amp;diff=4530&amp;oldid=prev</id>
		<title>ru_wikipedia&gt;Тара-Амингу: ссылка на дизамбиг без основного значения</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8&amp;diff=4530&amp;oldid=prev"/>
		<updated>2021-09-25T12:54:19Z</updated>

		<summary type="html">&lt;p&gt;ссылка на дизамбиг без основного значения&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Динамическое распределение памяти&amp;#039;&amp;#039;&amp;#039; — способ выделения [[оперативная память|оперативной памяти]] [[компьютер]]а для объектов в программе, при котором выделение памяти под объект осуществляется во время выполнения [[компьютерная программа|программы]]. &lt;br /&gt;
&lt;br /&gt;
При &amp;#039;&amp;#039;&amp;#039;динамическом распределении памяти&amp;#039;&amp;#039;&amp;#039; объекты размещаются в т. н. «[[Куча (нераспределённая память)|куче]]» ({{lang-en|heap}}): при конструировании объекта указывается размер запрашиваемой под объект памяти, и, в случае успеха, выделенная область памяти, условно говоря, «изымается» из «[[Куча (память)|кучи]]», становясь недоступной при последующих операциях выделения памяти. Противоположная по смыслу операция — освобождение занятой ранее под какой-либо объект памяти: освобождаемая память, также условно говоря, возвращается в «[[Куча (память)|кучу]]» и становится доступной при дальнейших операциях выделения памяти.&lt;br /&gt;
&lt;br /&gt;
По мере создания в программе новых объектов количество доступной памяти уменьшается. Отсюда вытекает необходимость постоянно освобождать ранее выделенную память. В идеальной ситуации программа должна полностью освободить всю память, которая потребовалась для работы. По аналогии с этим, каждая подпрограмма ([[Подпрограмма#.D0.92.D0.B8.D0.B4.D1.8B .D0.BF.D0.BE.D0.B4.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC|процедура]] или [[Функция (программирование)|функция]]) должна обеспечить освобождение всей памяти, выделенной в ходе её выполнения. Неправильное управление памятью приводит к т.н. «[[Утечка памяти|утечкам]]» памяти, когда выделенная память не освобождается. Многократные утечки памяти могут привести к исчерпанию всей оперативной памяти и нарушить работу операционной системы.&lt;br /&gt;
&lt;br /&gt;
Другая проблема — это проблема фрагментации памяти. Выделение памяти происходит &amp;#039;&amp;#039;блоками&amp;#039;&amp;#039; — непрерывными фрагментами оперативной памяти (таким образом, каждый блок — это несколько идущих подряд [[байт]]). В какой-то момент в куче попросту может не оказаться блока подходящего размера и, даже если свободная память достаточна для размещения объекта, операция выделения памяти окончится неудачей. &lt;br /&gt;
&lt;br /&gt;
Для управления динамическим распределением памяти используется [[Сборка мусора (программирование)|«сборщик мусора»]] — программный объект, который следит за выделением памяти и обеспечивает её своевременное освобождение. [[Сборка мусора|Сборщик мусора]] также следит за тем, чтобы свободные блоки имели максимальный размер, и, при необходимости, осуществляет дефрагментацию памяти.&lt;br /&gt;
&lt;br /&gt;
== Элементы реализации ==&lt;br /&gt;
&lt;br /&gt;
=== Язык программирования C (Си) ===&lt;br /&gt;
&lt;br /&gt;
В языке программирования [[Си (язык программирования)|Си]] имеются следующие [[функция (программирование)|функции]] для динамического распределения памяти, входящие в [[стандартная библиотека|стандартную библиотеку]]:&lt;br /&gt;
*[[Malloc(Си)|malloc]] (от {{lang-en|memory allocation}}, &amp;#039;&amp;#039;выделение памяти&amp;#039;&amp;#039;), &lt;br /&gt;
*[[Calloc(Си)|calloc]] (от {{lang-en|clear allocation}}, &amp;#039;&amp;#039;чистое выделение памяти&amp;#039;&amp;#039;) &lt;br /&gt;
*[[Realloc(Си)|realloc]] (от {{lang-en|reallocation}}, &amp;#039;&amp;#039;перераспределение памяти&amp;#039;&amp;#039;).&lt;br /&gt;
*[[Free (функция)|free]] ({{lang-en|free}}, &amp;#039;&amp;#039;освободить&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
=== Язык программирования C++ ===&lt;br /&gt;
В [[C++]] имеются два оператора:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[new (C++)|new]]&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[delete (C++)|delete]]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Язык программирования Object Pascal ===&lt;br /&gt;
&lt;br /&gt;
В [[Object Pascal]] имеются два оператора:&lt;br /&gt;
*New&lt;br /&gt;
*Dispose&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Менеджер памяти]]&lt;br /&gt;
* [[Куча (память)]]&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
* {{cite web&lt;br /&gt;
 |url         = http://www.opengroup.org/onlinepubs/009695399/functions/malloc.html&lt;br /&gt;
 |title       = malloc&lt;br /&gt;
 |lang        = en&lt;br /&gt;
 |description = Описание функции malloc в стандарте POSIX&lt;br /&gt;
 |archiveurl  = https://www.webcitation.org/67lLvV8r7?url=http://pubs.opengroup.org/onlinepubs/009695399/functions/malloc.html&lt;br /&gt;
 |archivedate = 2012-05-18&lt;br /&gt;
}}&lt;br /&gt;
* {{cite web&lt;br /&gt;
 |url         = http://www.opengroup.org/onlinepubs/009695399/functions/calloc.html&lt;br /&gt;
 |title       = calloc&lt;br /&gt;
 |lang        = en&lt;br /&gt;
 |description = Описание функции calloc в стандарте POSIX&lt;br /&gt;
 |archiveurl  = https://www.webcitation.org/67lLw3l3K?url=http://pubs.opengroup.org/onlinepubs/009695399/functions/calloc.html&lt;br /&gt;
 |archivedate = 2012-05-18&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление памятью]]&lt;br /&gt;
[[Категория:Структуры данных]]&lt;/div&gt;</summary>
		<author><name>ru_wikipedia&gt;Тара-Амингу</name></author>
	</entry>
</feed>