Skip to content

Repository contains implementation of basic C++ memory management primitives: unique_ptr, shared_ptr (with shared from this) and weak_ptr

Notifications You must be signed in to change notification settings

1NepuNep1/cpp_smart_ptrs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

C++ Smart Pointers Implementation

Eng

Description

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.

Key Features

  • 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.

Project Structure

  • 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.

Useful Materials

Rus

Описание

Этот проект предоставляет реализацию умных указателей на языке 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, который управляет подсчетом ссылок и удалением объектов.

Материалы:

About

Repository contains implementation of basic C++ memory management primitives: unique_ptr, shared_ptr (with shared from this) and weak_ptr

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages