Библиотека C/C++ разработчика | cpp, boost, qt
19.9K subscribers
1.88K photos
55 videos
16 files
4.09K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
#вопросы_с_собеседований

Как работает std::shared_ptr?

std::shared_ptr — это умный указатель, который использует подсчет ссылок для управления жизненным циклом объекта. Это означает, что несколько shared_ptr могут указывать на один и тот же объект, и он будет удален только тогда, когда все shared_ptr, указывающие на него, будут уничтожены.

Когда вы создаете shared_ptr, он увеличивает счетчик ссылок на объект. Когда shared_ptr уничтожается, он уменьшает счетчик ссылок. Если счетчик ссылок достигает нуля, это означает, что больше нет shared_ptr, указывающих на объект, и он может быть безопасно удален.

std::shared_ptr также предоставляет набор методов для управления объектом, таких как reset, который позволяет заменить текущий объект новым, и use_count, который возвращает текущее количество shared_ptr, указывающих на объект.

Вот простой пример использования std::shared_ptr:

#include
#include
int main() {
std::shared_ptr ptr1(new int(5));
std::cout << *ptr1 << std::endl; // выводит 5
std::cout << ptr1.use_count() << std::endl; // выводит 1
{
std::shared_ptr ptr2 = ptr1;
std::cout << ptr1.use_count() << std::endl; // выводит 2
}
std::cout << ptr1.use_count() << std::endl; // выводит 1
}

Создаем std::shared_ptr, который владеет динамически выделенным объектом типа int. Затем еще один shared_ptr, который указывает на тот же объект. Когда второй shared_ptr выходит из области видимости и уничтожается, счетчик ссылок уменьшается, но объект не удаляется, потому что все еще есть другой shared_ptr, указывающий на него.
👍91🤯1