2015-01-14 22 views
0

我的项目有问题,它在调试模式下编译时运行良好,并且在Visual Studio中连接调试器时可以在发布模式下正常工作,但如果我在发布中运行它如果没有调试器,我会在子弹物理学中发现访问冲突。在没有调试器的版本中发生访问冲突

访问冲突似乎发生在​​,我只是现在这是因为Windows给了我在崩溃后调试的选项。但是,在Linux上使用GCC进行编译时遇到同样的问题。

我的问题是:调试器连接和未连接可能导致此问题之间有什么变化?为什么当调试器被连接时不会发生这种崩溃,并且有什么办法让我设置调试器来解决这类问题?

+1

调试器可能会减慢速度,这可以保护您免受竞争条件的影响。如果你真的想解决这个问题,那么我推荐阅读http://sscce.org/ –

+1

如果你可以在Linux上运行它,请尝试使用valgrind运行它。它可能能够告诉你访问冲突的位置以及导致崩溃的所有其他违规。 – cup

+0

您以不同的方式运行程序。如果差异附加/不附加调试器,通过“从资源管理器中双击”或从命令行等运行它 - 没有问题,一个具有错误的程序可能并会表现出不同的行为。 – PaulMcKenzie

回答

2

如果这可以帮助未来的任何人 - 这个问题是由我在内存块中执行一个放置新内容引起的 - 这个内存块的大小不足以容纳该对象,无疑会覆盖属于子弹物理的一些内存。