奇怪的问题,经常有最简单的答案
最近碰见了一个奇怪的软件运行错误,debug下运行没问题,release运行就崩溃,而且崩溃的地方更是奇怪,ACE_GUARD错误。这个错误导致我数日的追踪毫无结果,后来才发现方向错误了。根本和这个ACE_GUARD毫无关系,是前面的操作中,加解密操作导致了内存被破坏,造成这个错误。我逐个分隔了问题,最终发现了这个原因。看来这种错误,要多从内存操作入手来查找。奇怪的问题,经常有最简单的答案。 呵呵,这个一定儿都不奇怪,,,,
偶以为,所有的操作实际都是在内存中进行,那么所有的问题问题,实际上也都是由内存操作引起,,,
只不过被语言、语法等等分类了、屏蔽了,,, 嗯。不无道理。 再补充两句,这个问题是因为在引入的加密函数中,使用了一个全局变量引起的!
全局变量毫无保护,在多线程的情况下出现了这种错误毫无奇怪,只怪我没有及时发现这点。
切记切记。 深有同感,记得上次和银行的一个接口,我整整调了一个周,最后发现是银行的问题~
它们提供的DLL中,明明只要80个字节,却memset了2000个,唉~ 我遇近也遇到了类似的问题.
最近要忙一个项目,项目有多个不同的服务组成,为了提高生产力,先设计一些复用度较高的"工厂"类,它们是些dll,共同形成相当于一个框架的东西.
于是,我的工作空间中需要管理多个项目,一边加功能,一边还重构,要不停的改进这些"框架".
有一天,突然发现ACE内部出错.吓得我一身冷汗.
好在很快发现了原因:
由于我没有在mpc中使用after来管理不同项目的依赖关系,在link的时候,把旧版本的lib文件引入了.导至虚函数调用时错位,整个世界都乱了.
后来编译的时候,手工按顺序编译,就再没出类似的错了.
页:
[1]