std::unique_ptr: им задают, как освобождать память. Частый вариант - указатель на функцию.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpUpUd 353 of 696 menu
◀ ▶

Свой удалитель для unique_ptr в C++

Удалитель - второй параметр шаблона std::unique_ptr: им задают, как освобождать память.

Частый вариант - указатель на функцию, которая выполняет побочное действие и затем вызывает delete. Запишем такую функцию и передадим ее при создании unique_ptr:

#include <iostream> #include <memory> void trace_delete(int* p) { std::cout << "trace\n"; delete p; } int main() { std::unique_ptr<int, void(*)(int*)> slot( new int(5), trace_delete); std::cout << *slot << "\n"; return 0; }

Напишите функцию void drop(int* p), печатающую drop и вызывающую delete. Создайте unique_ptr<int, void(*)(int*)> с числом 2 и этим удалителем. Выведите значение до выхода из main.

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