std::shared_ptr удалитель задают вторым аргументом конструктора: общий удалитель хранится вместе со счетчиком ссылок в блоке управления.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpUpSd 354 of 696 menu
◀ ▶

Общий удалитель для shared_ptr в C++

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

Когда последняя копия исчезает, вызывается именно эта функция, а не голый delete. Подойдет лямбда с захватом или отдельная функция. Запишем shared_ptr на целое с лямбдой, которая печатает слово и освобождает буфер:

#include <iostream> #include <memory> int main() { std::shared_ptr<int> tally( new int(12), [](int* p) { std::cout << "shared free\n"; delete p; }); std::cout << *tally << "\n"; return 0; }

Соберите shared_ptr<int> на число 7 с лямбдой-удалителем, печатающей done перед delete. Скопируйте указатель в вторую переменную и выведите значение из копии.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить