共享库中单例的多个实例
class singleton { public: static singleton* instance() { static singleton p; return &p; } private: singleton(){} } template<class T> class CSingleT { public: static T * Instance() { if (!ms_pObject) { ms_pObject = new T; } return ms_pObject; } protected: static T * ms_pObject; } template <class T> T * CSingleT<T>::ms_pObject = NULL;模板是编译的时候实例化成“真正的类”,即编译生成动态库的过程中,编译器进行了的实例化过程
在动态链接过程中,在其他库没有发现有singleton::instance这个实例(但是事实上,该实例已经存在了),那么就会自己创建一个实例,这样就导致了多个实例。
使用运行时加载的共享库时必须小心。这样的构造严格不是C ++标准的一部分,您必须仔细考虑这样一个过程的语义是什么。
Linux
-rdynamic 暴露了函数名,共享动态符号表C++中模板单例的跨SO(DLL)问题:RTTI,typeid,static,单例
动态库中单例一记
动态库之间单例模式出现多个实例(Linux)
多个so中模板单例的多次实例化
