Skip to content

Latest commit

 

History

History
16 lines (10 loc) · 1.89 KB

File metadata and controls

16 lines (10 loc) · 1.89 KB

Smart-Pointers

Собственная реализация умных указателей в соответствии с C++20.

  • Код хорошо покрыт тестами, проверяется корректное освободжение памяти, отсуствие утечек
  • Используется эффективная реализация, в UniquePtr хранится самописная CompressedPair, для использования EBO.

Иногда объект, созданный на куче, нужно передавать в кучу функций, методов и т.д. В такой ситуации становится сложно уследить за лайфтаймом объекта и моментом, когда нужно освобождать выделенную под объект память.

Хотелось бы пользоваться удобной обёрткой, которая автоматически будет выделять память при создании объекта и освобождать память, когда объект больше не используется --- ровно для этого и существуют умные указатели.

Умные указатели бывают разные. В рамках этого проекта мы рассмотрим три типа, которые отличаются между собой семантикой владения:

  • UniquePtr является единственным владельцем объекта.
  • SharedPtr позволяет множественное владение.
  • IntrusivePtr позволяет множественное владение, как и SharedPtr, использование IntrusivePtr накладывает определенные ограничения на пользовательский тип.