How do I implement custom deleters in C++?

In C++, custom deleters can be implemented using smart pointers, specifically `std::unique_ptr` and `std::shared_ptr`. They allow you to define how dynamically allocated memory should be released, providing greater control over resource management. This is particularly useful for handling resources that require specific cleanup actions beyond what is provided by the default deleter.

Here's an example of how to implement a custom deleter using `std::unique_ptr`:

#include <iostream> #include <memory> // Custom deleter function void customDeleter(int* p) { std::cout << "Deleting pointer: " << p << std::endl; delete p; // Custom cleanup action } int main() { // Creating a unique_ptr with a custom deleter std::unique_ptr<int, decltype(&customDeleter)> ptr(new int(10), customDeleter); std::cout << "Value: " << *ptr << std::endl; return 0; }

keywords: C++ custom deleters smart pointers unique_ptr shared_ptr resource management