![](/img/trans.png)
[英]C++ 1st program in visual studio 2008 express edition
[英]C++ Visual Studio 2008, delete() operation crashes program
几天以来,我一直在Visual Studio 2008中遇到与我的C ++软件有关的问题。 如果我将Visual Studio设置设置为“ Release Win32”模式,则可以正常工作。
但是,如果将其设置为“ Debug Win32”,则在使用delete时会出现崩溃问题。 可以编译,但是在运行时,软件在遇到的第一个“删除”时崩溃。
考虑一下这个Snaphsot:
如您所见,当软件到达“删除温度”时; 命令执行,它崩溃并显示以下消息:
调试断言失败! 程序...表达式_BLOCK_TYPE_IS_VALID(pHead-> nBlockHouse)
问题是什么? 怎么解决呢?
为什么在“发布”模式下没有任何错误?
谢谢
您只应delete
您的new
并delete[]
您的new[]
。 没有其他的。 您还试图使用空指针来调用函数。 当您尝试调用无方法时会发生什么? 好吧,那不可能是什么好事。
您有temp = NULL,然后在下一行上调用方法吗? 然后您尝试删除它吗?
除此之外,断言不是“错误”。 断言在调试模式下可以声明您正在断言某个条件(这些条件通常也包括在MFC之类的整个库中),如果断言失败,它将调用代码以通知您有关情况,并让您有机会闯入调试器为了调试问题。
调试器执行“声明”。 这是对代码正确性的另一项检查,例如:“声明指针不为空”。 这样做很好,因为它有助于发现错误。 我同意任何声称调试器发出的消息无助于查找错误源的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.