我用MS VC ++ 2010和GCC 4.2.1编写了一个C ++ CLI程序(对于Mac OS X 10.6 64位,在Eclipse中)。 该程序在GCC + OS X下运行良好,大部分时间在Windows下运行。但有时它会默默地冻结。命令行光标一直闪烁,但程序拒绝继续工作。
以下配置效果很好: GCC与'发布'和'调试'组态。 VC ++ with' Debug'构造
错误仅发生在配置&#VC; VC ++ with' Release'构造'在Win 7 32位和64位下。不幸的是,这是我的客户想要使用的配置; - (
我已经检查了我的程序高低,并修复了所有内存泄漏。但是这个错误仍然会发生。您对我如何找到错误有任何想法吗?
答案 0 :(得分:1)
调试版本通常会初始化所有已分配的内存(MSVC使用调试配置将0xCD
填充它们)。也许你的类中有一些未初始化的值,使用GCC配置和MSVC Debug配置它会获得“幸运”值,但在MSVC Release中它没有。
以下是the rest of the magic numbers used by MSVC。
所以寻找未初始化的变量,属性和分配的内存块。
答案 1 :(得分:1)
答案 2 :(得分:0)
谢谢大家,特别是Cody Gray和MikMik,我找到了! 正如你们中的一些人所建议我告诉VS在发布配置中生成调试信息和禁用优化。然后我启动了程序并暂停了它。或者,我远程连接到正在运行的进程。这有助于我找到错误所在的区域。 原因是无限循环,由数组边界后面的读取和缺少无效情况的排除引起。两者都导致运行时无法访问的停止条件。深奥的部分来自这样一个事实,即我的程序使用了一些随机值。 这就是生活...