You can inherit your Singleton from DeletedAtShutdown, which will take care of deleting without leaking (like the name suggests).
The difference to SharedResourcePointer is, that the SharedResourcePointer is created on the fly and deleted as soon as possible, vs. the singleton stays alive until the application shuts down or it is deleted manually.