我无法找到关于此的更多或任何信息。我有一个使用VS2005构建的项目,因此使用mscvr80.dll。我的项目还加载了第三方库,然后加载mscvrt60.dll。
现在我的程序中有一个奇怪的错误,程序因内存读取违规而崩溃(在调试中它位于0xcdcdcdcd,来自我的搜索描述了一个未初始化的内存位置)。调试器指示违规在第三方库中的未知函数内。
我已联系过此库的所有者,他们不知道有任何错误,如上所述。此外,我有其他项目,在VS60中编译,使用此第三方库,并没有类似的错误。因此,我想知道,使用多个常见的运行时版本会有问题吗?我记得模糊地听说过一个运行时(例如.dll)可以分配内存的情况,然后如果另一个版本试图释放这个内存,那么可能会导致问题。但是,我不记得我在哪里读到这个,也无法找到关于这个主题的更多信息。
非常感谢任何输入。
答案 0 :(得分:1)
释放一个版本的运行时在另一个版本中分配的内存肯定会导致问题。无法保证版本之间CRT堆的实现细节保持不变。如果找不到任何其他解决方法,可以尝试针对mscvrt60.dll编译应用程序。
答案 1 :(得分:1)
如果您看到0xcdcdcdcd,那么您可能正在混合调试运行时库和发布运行时库。它们应该可以一起工作,但您可以尝试仅使用发布运行时来复制问题。