Intrusive smart pointers
Tracking all native memory allocations in a multithreaded environment is notoriously difficult process, especially when it comes to passing objects ownership between different threads. In C++, memory management can be automated using smart pointers. The standard std::shared_ptr
class is a good place to start with. However, we want to focus on more interesting and lightweight techniques. We will not use the Boost library either, since we really want to stay lean when it comes to compile times.
Note
The recent versions of the Android NDK support the C++ 11 Standard Library in full. If you feel more comfortable with std::shared_ptr
or intrusive pointers from Boost, feel free to use smart pointers from those libraries.
In an intrusive smart pointer, as the name suggests, a reference counter is embedded into the object. The simplest way to do this is by inheriting from the following base class:
class iIntrusiveCounter { private: std::atomic<long> m_RefCounter; public...