Code :: Blocks调试模式:我的代码在构建和运行时崩溃,但如果调试/继续则不会崩溃

时间:2015-08-09 23:09:07

标签: c++ debugging crash codeblocks

我的IDE是Code :: Blocks。我处于调试模式,我点击“红色播放按钮”进行调试/继续,我的代码运行正常。然后,总是在调试模式下,我单击“绿色播放按钮”运行,我的代码崩溃。 关于为什么会这样的想法?如果单击Debug / Continue一切正常,我如何在代码中找到错误? 我不能包含我的代码副本,因为它太长了。

在调试和错误调试之后,我发现当我使用“delete []”来解除分配用“new”分配的指针所指向的内存块时程序崩溃了。奇怪的是,这个动态分配和释放是在for循环中,并且程序在几个循环之后崩溃,所以在开始时不是正确的。

感谢您提出的任何建议。

编辑:分配是“new []”。我无法粘贴代码,因为它太长了。在我的代码中使用相同的分配和释放没有问题的其他指针,但显然只有其中一些导致代码在解除分配时崩溃。我如何调试如果单击“Debug / Continue”时程序没有崩溃但是当我点击“Run”时它会崩溃?

2 个答案:

答案 0 :(得分:1)

调试和释放模式之间的一个主要区别是,通常在调试中,所有内存都将初始化为零。通常这会使调试中的内容比发布时更好。

但是,如果您正在访问已初始化为0的指针,则会导致分段错误或类似情况。在发布模式下,您可能只是幸运,并且让指针查看可以访问的内存。

答案 1 :(得分:0)

感谢您的帮助。最后我的程序试图访问超出界限的指针,所以我解决了它。奇怪的是调试器没有显示任何错误/警告(例如分段错误)。