Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

readme.md

Оглавление

1. Решение задачи
   1.1. Пример работы
2. Теория
   2.1. new (C++)
   2.2. Перегрузка операторов new и delete для отдельных классов
   2.3. Дополнительная литература

Написать библиотеку для работы с памятью

1.1. Пример работы

2. Теория

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. Дополнительная литература

new (C++)

malloc vs new