症结不在单例,是声明变量、或者调用instance的地方,是non-local的,
这个运行时机不能保证里面用的字符串初始化好了。
这种模式在需要大量注册handler时,经常用到。我这个bug是在注册的过程中,访问了静态字符串。以前没意识到这问题,是机械的,认为在同行业的代码库中看到过都这样做,就没问题。只知其一,不知其二。
在dll加载后开始执行处,专门加个函数,DoRegister,里面逐个调用就不会有这问题。但是多个人要改同一个文件。
【 在 hgoldfish 的大作中提到: 】
: 所以还是弄个 RegisterHelper<T>::instance() 函数会好一点。单例模式在 c++ 里面确实有用。
:
--
修改:DoorWay FROM 124.114.151.*
FROM 124.114.151.*