编码心得:为什么我的单件(Singleton)对象会有两个地址呢?

类别:编程语言 点击:0 评论:0 推荐:

最近编码遇到个问题,浪费了我近一天的时间才找出答案。
我的程序分A,B,C三个模块,每个模块编译成DLL。C模块是用Singleton模式,A,B模块分别用到,然而运行起来发现模块C工作不正常。模块C已经经过了单元测试,并在其他程序上一直很好的运行,没发现什么bug。一切看起来都没问题,就这样,十分苦恼的过了一个早上,毫无头绪。
后来,我分别在A,B模块中打印C对象的地址,惊奇的发现它们分别打印出来的地址竟然不同!也就是说,我的单件实作了两个对象!这简直是不可能的事情!我猛然省悟到有可能是DLL的版本不同,去看工程文件,果然,模块A是用的Release版本,模块B却是用的Debug版本,结果AB两个模块调用的DLL是不一样的,这就难怪为什么会有两个地址了。修改过来,问题解决。

就是这个本身代码没有错误,只是因为疏忽导致的Bug,让我一天毫无产出,非常沮丧。公布出来,希望各位看客不要重蹈覆辙。

(Noiile)

本文地址:http://com.8s8s.com/it/it27118.htm