<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sinay</id>
		<title>SEWiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sinay"/>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Sinay"/>
		<updated>2026-04-06T04:03:42Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Sinay&amp;diff=601</id>
		<title>Участник:Sinay</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Sinay&amp;diff=601"/>
				<updated>2011-10-20T05:11:57Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: Новая страница: «'''email:''' pavel.sinay(at)gmail.com  '''Прошлое место учебы учебы:''' 2006 - 2010 Санкт-Петербургский государств…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''email:''' pavel.sinay(at)gmail.com&lt;br /&gt;
&lt;br /&gt;
'''Прошлое место учебы учебы:''' 2006 - 2010 Санкт-Петербургский государственные Политехнический университет, факультет при ЦНИИ робототехники и технической кибернетики.&lt;br /&gt;
&lt;br /&gt;
'''Текущее место учебы:''' 2010 - н.в Академический университет, Software Engineering&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=329</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=329"/>
				<updated>2011-05-30T11:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
Как это делается:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct A&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
&lt;br /&gt;
   void * operator new(size_t size)&lt;br /&gt;
   {&lt;br /&gt;
      return malloc(size);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   void operator delete(void *p)&lt;br /&gt;
   {&lt;br /&gt;
      free(p);&lt;br /&gt;
   }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эти операторы являются '''static'''.&lt;br /&gt;
&lt;br /&gt;
В оператор new передается параметр size, указывающий сколько памяти нужно выделить. Это сделано для возможности наследования от нашего класса - наследникам скорее всего понадобится больше памяти, и мы должны ее выделить.&lt;br /&gt;
Возвращаемое значение оператора new '''void*''', а не '''A*''', так как на момент его работы объект еще не существует. Конструктор будет вызван только после успешной отработки оператора new.&lt;br /&gt;
&lt;br /&gt;
Перегрузка операторов для создания и удаления массива объектов производится отдельно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new[](size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete[](void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается размер блока памяти, предназначенного для хранения '''всех''' объектов в массиве. После выполнения оператора new[] производится последовательный вызов конструкторов для объектов из массива.&lt;br /&gt;
Перед выполнением оператора delete[] производится последовательный вызов деструкторов для всех объектов.&lt;br /&gt;
&lt;br /&gt;
== Возможные проблемы ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct B : A&lt;br /&gt;
{&lt;br /&gt;
   int b;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
B *pb = new B[10];&lt;br /&gt;
A *pa = pb;         //ошибки не будет&lt;br /&gt;
&lt;br /&gt;
delete [] pa;      //ошибка - пытаемся вызвать 10 раз деструктор для объекта класса A, но там объект класса B.&lt;br /&gt;
pa++;              //ошибка - указатель сдвинется на размер класса A, но поскольку в массиве лежат объекты класса B другого размера pa будет указывать не на следующий объект, а непонятно куда.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
Если перегрузить операторы вне класса, то будет произведена перегрузка всех соответствующих операторов, находящихся как внутри классов так и глобальных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new(size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete(void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для перегрузки глобальных операторов также нужно перегружать отдельно операторы new и new[], delete и delete[].&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры оператора new ==&lt;br /&gt;
Обычно, при ошибке во время выполнения оператора new кидается исключение. Можно сделать так, чтобы исключение не кидалось, а вместо этого оператор возвращал NULL:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *pi = new(std::no_throw) int;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для оператора delete такой возможности не предусмотрено, так как он в любом случае не кидает исключений.&lt;br /&gt;
&lt;br /&gt;
Кроме того, можно создавать объект на уже выделенной памяти:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *A = new(pi)A();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эту операцию нужно производить осторожно - размера выделенной заранее памяти должно хватить для размещения объекта A.&lt;br /&gt;
В данном примере класс A содержит единственное поле int a, так что места для него будет достаточно.&lt;br /&gt;
&lt;br /&gt;
Возможные применения:&lt;br /&gt;
* Работа при сильно ограниченной памяти.&lt;br /&gt;
* Необходимость создать объект по строго определенному адресу в памяти (например при работе со встраиваемой системой, если нужно создать объект для управления неким аппаратным ресурсом, расположенном по известному адресу).&lt;br /&gt;
* Реализация паттерна &amp;quot;Феникс&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=328</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=328"/>
				<updated>2011-05-30T11:42:29Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
Как это делается:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct A&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
&lt;br /&gt;
   void * operator new(size_t size)&lt;br /&gt;
   {&lt;br /&gt;
      return malloc(size);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   void operator delete(void *p)&lt;br /&gt;
   {&lt;br /&gt;
      free(p);&lt;br /&gt;
   }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эти операторы являются '''static'''.&lt;br /&gt;
&lt;br /&gt;
В оператор new передается параметр size, указывающий сколько памяти нужно выделить. Это сделано для возможности наследования от нашего класса - наследникам скорее всего понадобится больше памяти, и мы должны ее выделить.&lt;br /&gt;
Возвращаемое значение оператора new '''void*''', а не '''A*''', так как на момент его работы объект еще не существует. Конструктор будет вызван только после успешной отработки оператора new.&lt;br /&gt;
&lt;br /&gt;
Перегрузка операторов для создания и удаления массива объектов производится отдельно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new[](size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete[](void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается размер блока памяти, предназначенного для хранения '''всех''' объектов в массиве. После выполнения оператора new[] производится последовательный вызов конструкторов для объектов из массива.&lt;br /&gt;
Перед выполнением оператора delete[] производится последовательный вызов деструкторов для всех объектов.&lt;br /&gt;
&lt;br /&gt;
== Возможные проблемы ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct B : A&lt;br /&gt;
{&lt;br /&gt;
   int b;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
B *pb = new B[10];&lt;br /&gt;
A *pa = pb;         //ошибки не будет&lt;br /&gt;
&lt;br /&gt;
delete [] pa;      //ошибка - пытаемся вызвать 10 раз деструктор для объекта класса A, но там объект класса B.&lt;br /&gt;
pa++;              //ошибка - указатель сдвинется на размер класса A, но поскольку в массиве лежат объекты класса B другого размера pa будет указывать не на следующий объект, а непонятно куда.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
Если перегрузить операторы вне класса, то будет произведена перегрузка всех соответствующих операторов, находящихся как внутри классов так и глобальных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new(size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete(void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для перегрузки глобальных операторов также нужно перегружать отдельно операторы new и new[], delete и delete[].&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры оператора new ==&lt;br /&gt;
Обычно, при ошибке во время выполнения оператора new кидается исключение. Можно сделать так, чтобы исключение не кидалось, а вместо этого оператор возвращал NULL:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *pi = new(std::no_throw) int;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для оператора delete такой возможности не предусмотрено, так как он в любом случае не кидает исключений.&lt;br /&gt;
&lt;br /&gt;
Кроме того, можно создавать объект на уже выделенной памяти:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *A = new(pi)A();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эту операцию нужно производить осторожно - размера выделенной заранее памяти должно хватить для размещения объекта A.&lt;br /&gt;
В данном примере класс A содержит единственное поле int a, так что места для него будет достаточно.&lt;br /&gt;
&lt;br /&gt;
Возможные применения:&lt;br /&gt;
* Работа при сильно ограниченной памяти.&lt;br /&gt;
* Необходимость создать объект по строго определенному адресу в памяти (например при работе со встраиваемой системой, если нужно создать объект для управления неким аппаратным ресурсом, расположенном по известному адресу).&lt;br /&gt;
* Реализация паттерна &amp;quot;Феникс&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=327</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=327"/>
				<updated>2011-05-30T11:19:25Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
Как это делается:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct A&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
&lt;br /&gt;
   void * operator new(size_t size)&lt;br /&gt;
   {&lt;br /&gt;
      return malloc(size);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   void operator delete(void *p)&lt;br /&gt;
   {&lt;br /&gt;
      free(p);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается параметр size, указывающий сколько памяти нужно выделить. Это сделано для возможности наследования от нашего класса - наследникам скорее всего понадобится больше памяти, и мы должны ее выделить.&lt;br /&gt;
Возвращаемое значение оператора new '''void*''', а не '''A*''', так как на момент его работы объект еще не существует. Конструктор будет вызван только после успешной отработки оператора new.&lt;br /&gt;
&lt;br /&gt;
Перегрузка операторов для создания и удаления массива объектов производится отдельно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new[](size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete[](void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается размер блока памяти, предназначенного для хранения '''всех''' объектов в массиве. После выполнения оператора new[] производится последовательный вызов конструкторов для объектов из массива.&lt;br /&gt;
Перед выполнением оператора delete[] производится последовательный вызов деструкторов для всех объектов.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
Если перегрузить операторы вне класса, то будет произведена перегрузка всех соответствующих операторов, находящихся как внутри классов так и глобальных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new(size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete(void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для перегрузки глобальных операторов также нужно перегружать отдельно операторы new и new[], delete и delete[].&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры оператора new ==&lt;br /&gt;
Обычно, при ошибке во время выполнения оператора new кидается исключение. Можно сделать так, чтобы исключение не кидалось, а вместо этого оператор возвращал NULL:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *pi = new(std::no_throw) int;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кроме того, можно создавать объект на уже выделенной памяти:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *A = new(pi)A();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эту операцию нужно производить осторожно - размера выделенной заранее памяти должно хватить для размещения объекта A.&lt;br /&gt;
&lt;br /&gt;
Возможные применения:&lt;br /&gt;
* Работа при сильно ограниченной памяти.&lt;br /&gt;
* Необходимость создать объект по строго определенному адресу в памяти (например при работе со встраиваемой системой, если нужно создать объект для управления неким аппаратным ресурсом, расположенном по известному адресу).&lt;br /&gt;
* Реализация паттерна &amp;quot;Феникс&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=326</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=326"/>
				<updated>2011-05-30T11:18:25Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
Как это делается:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct A&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
&lt;br /&gt;
   void * operator new(size_t size)&lt;br /&gt;
   {&lt;br /&gt;
      return malloc(size);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   void operator delete(void *p)&lt;br /&gt;
   {&lt;br /&gt;
      free(p);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается параметр size, указывающий сколько памяти нужно выделить. Это сделано для возможности наследования от нашего класса - наследникам скорее всего понадобится больше памяти, и мы должны ее выделить.&lt;br /&gt;
Возвращаемое значение оператора new '''void*''', а не '''A*''', так как на момент его работы объект еще не существует. Конструктор будет вызван только после успешной отработки оператора new.&lt;br /&gt;
&lt;br /&gt;
Перегрузка операторов для создания и удаления массива объектов производится отдельно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new[](size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete[](void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается размер блока памяти, предназначенного для хранения '''всех''' объектов в массиве. После выполнения оператора new[] производится последовательный вызов конструкторов для объектов из массива.&lt;br /&gt;
Перед выполнением оператора delete[] производится последовательный вызов деструкторов для всех объектов.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
Если перегрузить операторы вне класса, то будет произведена перегрузка всех соответствующих операторов, находящихся как внутри классов так и глобальных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lng=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new(size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete(void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для перегрузки глобальных операторов также нужно перегружать отдельно операторы new и new[], delete и delete[].&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры оператора new ==&lt;br /&gt;
Обычно, при ошибке во время выполнения оператора new кидается исключение. Можно сделать так, чтобы исключение не кидалось, а вместо этого оператор возвращал NULL:&lt;br /&gt;
&amp;lt;source lng=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *pi = new(std::no_throw) int;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кроме того, можно создавать объект на уже выделенной памяти:&lt;br /&gt;
&amp;lt;source lng=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *A = new(pi)A();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эту операцию нужно производить осторожно - размера выделенной заранее памяти должно хватить для размещения объекта A.&lt;br /&gt;
&lt;br /&gt;
Возможные применения:&lt;br /&gt;
* Работа при сильно ограниченной памяти.&lt;br /&gt;
* Необходимость создать объект по строго определенному адресу в памяти (например при работе со встраиваемой системой, если нужно создать объект для управления неким аппаратным ресурсом, расположенном по известному адресу).&lt;br /&gt;
* Реализация паттерна &amp;quot;Феникс&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=325</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=325"/>
				<updated>2011-05-30T11:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
Как это делается:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct A&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
&lt;br /&gt;
   void * operator new(size_t size)&lt;br /&gt;
   {&lt;br /&gt;
      return malloc(size);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   void operator delete(void *p)&lt;br /&gt;
   {&lt;br /&gt;
      free(p);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается параметр size, указывающий сколько памяти нужно выделить. Это сделано для возможности наследования от нашего класса - наследникам скорее всего понадобится больше памяти, и мы должны ее выделить.&lt;br /&gt;
Возвращаемое значение оператора new '''void*''', а не '''A*''', так как на момент его работы объект еще не существует. Конструктор будет вызван только после успешной отработки оператора new.&lt;br /&gt;
&lt;br /&gt;
Перегрузка операторов для создания и удаления массива объектов производится отдельно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new[](size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete[](void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается размер блока памяти, предназначенного для хранения '''всех''' объектов в массиве. После выполнения оператора new[] производится последовательный вызов конструкторов для объектов из массива.&lt;br /&gt;
Перед выполнением оператора delete[] производится последовательный вызов деструкторов для всех объектов.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
Если перегрузить операторы вне класса, то будет произведена перегрузка всех соответствующих операторов, находящихся как внутри классов так и глобальных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new(size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete(void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для перегрузки глобальных операторов также нужно перегружать отдельно операторы new и new[], delete и delete[].&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры оператора new ==&lt;br /&gt;
Обычно, при ошибке во время выполнения оператора new кидается исключение. Можно сделать так, чтобы исключение не кидалось, а вместо этого оператор возвращал NULL:&lt;br /&gt;
&amp;lt;source lng=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *pi = new(std::no_throw) int;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кроме того, можно создавать объект на уже выделенной памяти:&lt;br /&gt;
&amp;lt;source lng=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int *A = new(pi)A();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эту операцию нужно производить осторожно - размера выделенной заранее памяти должно хватить для размещения объекта A.&lt;br /&gt;
&lt;br /&gt;
Возможные применения:&lt;br /&gt;
* Работа при сильно ограниченной памяти.&lt;br /&gt;
* Необходимость создать объект по строго определенному адресу в памяти (например при работе со встраиваемой системой, если нужно создать объект для управления неким аппаратным ресурсом, расположенном по известному адресу).&lt;br /&gt;
* Реализация паттерна &amp;quot;Феникс&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=324</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=324"/>
				<updated>2011-05-30T10:53:39Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
Как это делается:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct A&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
&lt;br /&gt;
   void * operator new(size_t size)&lt;br /&gt;
   {&lt;br /&gt;
      return malloc(size);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   void operator delete(void *p)&lt;br /&gt;
   {&lt;br /&gt;
      free(p);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается параметр size, указывающий сколько памяти нужно выделить. Это сделано для возможности наследования от нашего класса - наследникам скорее всего понадобится больше памяти, и мы должны ее выделить.&lt;br /&gt;
Возвращаемое значение оператора new '''void*''', а не '''A*''', так как на момент его работы объект еще не существует. Конструктор будет вызван только после успешной отработки оператора new.&lt;br /&gt;
&lt;br /&gt;
Перегрузка операторов для создания и удаления массива объектов производится отдельно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void * operator new[](size_t size)&lt;br /&gt;
{&lt;br /&gt;
   return malloc(size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void operator delete[](void *p)&lt;br /&gt;
{&lt;br /&gt;
   free(p);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается размер блока памяти, предназначенного для хранения '''всех''' объектов в массиве. После выполнения оператора new[] производится последовательный вызов конструкторов для объектов из массива.&lt;br /&gt;
Перед выполнением оператора delete[] производится последовательный вызов деструкторов для всех объектов.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры операторов new и delete ==&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=322</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=322"/>
				<updated>2011-05-30T10:24:13Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
Как это делается:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct A&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
&lt;br /&gt;
   void * operator new(size_t size)&lt;br /&gt;
   {&lt;br /&gt;
      return malloc(size);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   void operator delete(void *p)&lt;br /&gt;
   {&lt;br /&gt;
      free(p);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В оператор new передается параметр size, указывающий сколько памяти нужно выделить. Это сделано для возможности наследования от нашего класса - наследникам скорее всего понадобится больше памяти, и мы должны ее выделить.&lt;br /&gt;
Возвращаемое значение оператора new void*, а не A*, так как на момент его работы объект еще не существует. Конструктор будет вызван только после успешной отработки оператора new.&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры операторов new и delete ==&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=321</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=321"/>
				<updated>2011-05-30T10:20:39Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
Как это делается:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct A&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
&lt;br /&gt;
   void * operator new(size_t size)&lt;br /&gt;
   {&lt;br /&gt;
      return malloc(size);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   void operator delete(void *p)&lt;br /&gt;
   {&lt;br /&gt;
      free(p);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры операторов new и delete ==&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=319</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=319"/>
				<updated>2011-05-30T10:08:32Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;br /&gt;
&lt;br /&gt;
== Перегрузка операторов new и delete в классах ==&lt;br /&gt;
&lt;br /&gt;
== Перегрузка глобальных операторов new и delete ==&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры операторов new и delete ==&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=318</id>
		<title>Перегрузка операторов new и delete. Павел Синай</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_new_%D0%B8_delete._%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB_%D0%A1%D0%B8%D0%BD%D0%B0%D0%B9&amp;diff=318"/>
				<updated>2011-05-30T10:05:40Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: Новая страница: «== Для чего это нужно == * Организация кэширования памяти. * Организация сборщика мусора. * По…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Для чего это нужно ==&lt;br /&gt;
* Организация кэширования памяти.&lt;br /&gt;
* Организация сборщика мусора.&lt;br /&gt;
* Поиск утечек памяти.&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D1%8B_%D0%A1%2B%2B&amp;diff=317</id>
		<title>Конспекты С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D1%8B_%D0%A1%2B%2B&amp;diff=317"/>
				<updated>2011-05-30T10:03:12Z</updated>
		
		<summary type="html">&lt;p&gt;Sinay: /* 2 семестр (зима-весна 2011) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1 семестр (осень-зима 2010) ==&lt;br /&gt;
&lt;br /&gt;
* [[ Как происходит компиляция|Как происходит компиляция. Алексей Давыдов. 08.09.2010]]&lt;br /&gt;
* [[ Указатели и ссылки|Указатели и ссылки. Екатерина Полищук. 10.09.2010]]&lt;br /&gt;
* [[ Динамическое распределение памяти|Динамическое распределение памяти. Алексей Гуревич. 17.09.2010]]&lt;br /&gt;
* [[ Классы|Классы. Курьян Кристина. 08.10.2010]]&lt;br /&gt;
* [[ Перегрузка операторов|Перегрузка операторов. Мария Фомкина. 12.11.2010]]&lt;br /&gt;
* [[ Множественное наследование, дружба|Множественное наследование, дружба Евгений Баталов. 02.12.2010]]&lt;br /&gt;
&lt;br /&gt;
== 2 семестр (зима-весна 2011) ==&lt;br /&gt;
&lt;br /&gt;
* [[ Напоминание про inline и static. Синглтон.|Напоминание про inline и static. Синглтон. Екатерина Полищук. 11.02.2011]]&lt;br /&gt;
* [[ STL. Последовательные контейнеры|STL. Последовательные контейнеры. Мария Фомкина. 18.02.2011]]&lt;br /&gt;
* [[ Ассоциативные контейнеры |STL. Ассоциативные контейнеры. Светлана Марченко. 25.02.2011]]&lt;br /&gt;
* [[ Итераторы и алгоритмы | Итераторы и алгоритмы. Всеволод Опарин. 04.03.2011]]&lt;br /&gt;
* [[ Функторы. Namespaces | Функторы. Namespaces. Иван Близнец. 09.03.2011 ]]&lt;br /&gt;
* [[ Указатели на функции|Указатели на функции. Курьян Кристина. 18.03.2011]]&lt;br /&gt;
* [[ Исключения | Методы обработки ошибок. Исключения. Гарантии исключений. Евгений Баталов. 01.04.2011 ]]&lt;br /&gt;
* [[ Приведение типов. RTTI | Приведение типов. RTTI. Алексей Гуревич. 15.04.2011 ]]&lt;br /&gt;
* [[ Перегрузка операторов new и delete. Павел Синай ]]&lt;br /&gt;
* [[ Метапрограммирование на C++ | Метапрограммирование на C++. Александр Карташов. 06.05.2011 ]]&lt;/div&gt;</summary>
		<author><name>Sinay</name></author>	</entry>

	</feed>