Перегрузка операторов new и delete. Павел Синай — различия между версиями
Материал из SEWiki
Sinay (обсуждение | вклад) |
Sinay (обсуждение | вклад) |
||
| Строка 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);
}
}