Перегрузка операторов new и delete. Павел Синай — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
Строка 5: Строка 5:
  
 
== Перегрузка операторов new и delete в классах ==
 
== Перегрузка операторов new и delete в классах ==
 +
Как это делается:
 +
 +
<source lang="cpp">
 +
struct A
 +
{
 +
  int a;
 +
 +
  void * operator new(size_t size)
 +
  {
 +
      return malloc(size);
 +
  }
 +
 +
  void operator delete(void *p)
 +
  {
 +
      free(p);
 +
  }
 +
}
 +
</source>
  
 
== Перегрузка глобальных операторов new и delete ==
 
== Перегрузка глобальных операторов new и delete ==
  
 
== Дополнительные параметры операторов new и delete ==
 
== Дополнительные параметры операторов new и delete ==

Версия 13:20, 30 мая 2011

Для чего это нужно

  • Организация кэширования памяти.
  • Организация сборщика мусора.
  • Поиск утечек памяти.

Перегрузка операторов new и delete в классах

Как это делается:

struct A
{
   int a;

   void * operator new(size_t size)
   {
      return malloc(size);
   }

   void operator delete(void *p)
   {
      free(p);
   }
}

Перегрузка глобальных операторов new и delete

Дополнительные параметры операторов new и delete