它是可以的,如果程序有内存损坏,而调试,但在发布运行良好

Is it okay if program has Memory corruption while debugging, but runs fine in relase

本文关键字:布运行 运行 调试 如果 程序 损坏 内存      更新时间:2023-10-16

我有一个程序在调试时导致内存损坏,但在发布时运行得很好。为了增加陌生感,程序在"崩溃"之前完成了它的功能(它将数据保存到文件中)。这是否意味着Visual Studio不喜欢我的程序,还是意味着我有一个需要修复的严重错误?一般来说,如果调试模式崩溃,是否总是意味着程序有问题,或者可能只是程序在调试模式下运行的方式有问题,所以我不应该太担心?

这几乎肯定是应用程序中的一个bug,需要跟踪和修复。

有许多类型的bug会导致未定义的行为。某些类型的未定义行为(如内存损坏)可以表现为看似随机的故障,这些故障在程序中较晚出现,而不是导致它们的错误。

在调试模式下,Visual Studio会尽力确保此类故障尽可能早地发生并尽可能突出。在发布模式下,重点是性能。

在https://stackoverflow.com/a/312352/367273

中对调试和发布之间的一些差异进行了很好的总结。

不行。这很可能意味着某些变量或指针没有初始化。在调试模式下,这些未初始化的值通常默认为0,而在发布(优化)代码中不使用这种默认值。

这意味着你有严重的bug需要修复。最有可能的原因是您使用了未初始化的变量。在VS中,这是导致程序在调试和发布时运行不同的最常见原因。