1.1. Пример работы
2. Теория
2.1. new (C++)
2.2. Перегрузка операторов new и delete для отдельных классов
2.3. Дополнительная литература
2.1. new (C++)
new — оператор языка программирования C++, обеспечивающий выделение динамической памяти в free store. За исключением формы, называемой «размещающей формой new», new пытается выделить достаточно памяти в куче для размещения новых данных и, в случае успеха, возвращает адрес свежевыделенной памяти. Однако, если new не может выделить память в куче, то он передаст (throw) исключение типа std::bad_alloc. Это устраняет необходимость явной проверки результата выделения. После встречи компилятором ключевого слова new им генерируется вызов конструктора класса
2.2. Перегрузка операторов new и delete для отдельных классов
Операторы new и delete можно перегрузить. Для этого есть несколько причин:
- Можно увеличить производительность за счёт кеширования: при удалении объекта не освобождать память, а сохранять указатели на свободные блоки, используя их для вновь конструируемых объектов.
- Можно выделять память сразу под несколько объектов.
- Можно реализовать собственный "сборщик мусора" (garbage collector).
- Можно вести лог выделения/освобождения памяти.
2.3. Дополнительная литература
