代码:块调试模式:我的代码崩溃,如果构建和运行,但如果调试/继续

Code::Blocks debug mode: my code crashes if build and run, but not if debug/continue

本文关键字:代码 如果 调试 运行 继续 构建 我的 崩溃 模式      更新时间:2023-10-16

我的IDE是Code::Blocks。我在调试模式,我点击"红色播放按钮"调试/继续,我的代码运行良好。然后,总是在调试模式下,我点击运行的"绿色播放按钮",我的代码崩溃了。你知道为什么会这样吗?我怎么能找到我的代码中的错误,如果点击调试/继续一切运行良好?我不能包含我的代码的副本,因为它太长了。

经过反复调试后,我发现当我使用"delete[]"来释放由"new"分配的指针所指向的内存块时,程序崩溃了。奇怪的是,这个动态分配和释放是在for循环中,程序在几个循环后崩溃,所以不是在开始的时候。

谢谢你的建议。

EDIT: Allocation with "new[]"。代码太长,我无法粘贴。在我的代码中,对其他指针使用了相同的分配和解除分配,没有问题,但显然只有其中一些在解除分配时导致代码崩溃。我怎么能调试,如果当我点击"调试/继续"程序不崩溃,但它崩溃时,我点击"运行"?

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

然而,如果你正在访问一个已经初始化为0的指针,那么这将导致分段错误或类似的错误。在释放模式下,你可能只是很幸运,有这个指针看着内存是可访问的。

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

相关文章: