0

几天以来,我在 Visual Studio 2008 中遇到了一个与我的 C++ 软件相关的问题。如果我将 Visual Studio 设置设置为“发布 Win32”模式,它工作正常。

但是如果我将它设置为“Debug Win32”,使用删除时会出现崩溃问题。编译没问题,但是,在运行时,软件在第一次“删除”时崩溃。

考虑这个快照:

在此处输入图像描述

如您所见,当软件到达“删除温度”时;命令执行,它崩溃显示消息:

调试断言失败!程序...表达式 _BLOCK_TYPE_IS_VALID(pHead->nBlockHouse)

问题是什么?如何解决?

为什么在“发布”模式下没有任何错误?

谢谢

4

3 回答 3

4

你应该只有delete什么你newdelete[]什么你new[]。没有其他的。您还尝试使用空指针来调用函数。当你试图调用一个什么都没有的方法时会发生什么?好吧,这不可能是什么好事。

于 2012-05-21T13:33:35.957 回答
3

你有 temp = NULL 并且在下一行你调用了一个方法?然后你尝试删除它?


除此之外,断言不是“错误”。断言在调试模式下声明您正在断言某个条件(这些通常也包含在诸如 MFC 之类的库中),如果您的断言失败,它会调用代码来通知您并让您有机会闯入调试器以调试问题。

于 2012-05-21T13:33:22.873 回答
0

调试器执行“断言”。这是对代码正确性的额外检查,例如:“断言指针不为空。”。这样做很好,因为它有助于发现错误。我同意任何声称调试器发出的消息无助于查找错误源的人。

于 2012-05-21T13:41:07.060 回答