Make sure destructors never throw an exception, as this will terminate the application by C++11 definition.

A real-life example is when calling exit() in a multithreaded app: there, MemoryPool::release() will throw an exception if the static FastMutex instance data it relies on has been destructed by atexit before this delete-operator is run on a separate thread.