This project provides the implementation of smart pointers in C++: UniquePtr
, SharedPtr
, WeakPtr
, and auxiliary classes such as CompressedPair
and ControlBlock
. Smart pointers ensure efficient dynamic memory management, automatic resource release, and prevention of memory leaks.
- UniquePtr: Ensures unique ownership of an object, guaranteeing that only one pointer can own the object at any given time.
- SharedPtr: Provides shared ownership of an object through reference counting. The object will be deleted when the last
SharedPtr
is destroyed or reassigned. - WeakPtr: Provides a non-owning reference to an object managed by
SharedPtr
without affecting the reference count. - CompressedPair: Optimizes memory usage when storing a pair of values, one of which is often a pointer.
- ControlBlock: Manages reference counting and stores information about the deleter, serving as the foundation for the implementation of all smart pointers in the project.
- unique_ptr.h: Basic implementation of
UniquePtr
. - shared_ptr.h: Basic implementation of
SharedPtr
. - weak_ptr.h: Basic implementation of
WeakPtr
. - compressed_pair.h: Implementation of the
CompressedPair
class, which is used for memory optimization. - control_block.h: Implementation of the
ControlBlock
class, which manages reference counting and object deletion.
- https://en.cppreference.com/w/cpp/memory/shared_ptr
- https://en.cppreference.com/w/cpp/memory/unique_ptr
- https://en.cppreference.com/w/cpp/memory/weak_ptr
Этот проект предоставляет реализацию умных указателей на языке C++: UniquePtr
, SharedPtr
, WeakPtr
и вспомогательных классов, таких как CompressedPair
и ControlBlock
. Умные указатели обеспечивают эффективное управление динамической памятью, автоматическое освобождение ресурсов и предотвращение утечек памяти.
- UniquePtr: Обеспечивает уникальное владение объектом, гарантируя, что только один указатель может владеть объектом в любой момент времени.
- SharedPtr: Обеспечивает совместное владение объектом через подсчет ссылок. Объект будет удален, когда последний
SharedPtr
будет уничтожен или переназначен. - WeakPtr: Предоставляет неблокирующую ссылку на объект, управляемый
SharedPtr
, не влияя на счетчик ссылок. - CompressedPair: Оптимизирует использование памяти при хранении пары значений, одним из которых часто является указатель.
- ControlBlock: Управляет подсчетом ссылок и хранит информацию о деструкторе, являясь основой для реализации всех умных указателей в проекте.
- unique_ptr.h: Базовая реализация
UniquePtr
. - shared_ptr.h: Базовая реализация
SharedPtr
. - weak_ptr.h: Базовая реализация
WeakPtr
. - compressed_pair.h: Реализация класса
CompressedPair
, который используется для оптимизации памяти. - control_block.h: Реализация класса
ControlBlock
, который управляет подсчетом ссылок и удалением объектов.