Я вижу следующие конструкции:
-
new X
освободит память, если конструкторX
выбрал. -
operator new()
может быть перегружен.
Каноническое определение новой перегрузки оператора void *operator new(size_t c, heap h)
и соответствующее operator delete
.
Наиболее распространенным оператором новой перегрузки является размещение new, которое void *operator new(void *p) { return p; }
Вы почти всегда не можете называть delete
указателем, заданным для размещения new
.
Это приводит к одному вопросу: как очищается память при срабатывании конструктора X
и используется перегруженный new
?