[英]C++ - Debug Assertion Failed on program exit
如果删除已删除的对象,通常会出现这种错误。
如果将一个对象提供给应该拥有第一个对象所有权的多个其他对象,并且两者都尝试在其析构函数中删除它,则会发生这种情况。
正如消息框已经暗示的那样,您可能以某种方式破坏了堆。 您释放/删除了您不应该使用的某个内存块,或者您尝试写入已经释放/删除的某个内存块。
调用堆栈表明,这可能在单步执行main
函数的最后一行时发生。 如果真是这样,那么问题可能出在某些用户定义类型的清除例程中,您可以在main
函数中创建其实例。 尝试在自己的类的析构函数中设置断点并进行调查。
您可能在程序操作期间破坏了堆,但是直到程序结束才检测到堆,在这种情况下,堆栈跟踪只会指向内存检查例程
您可能在操作期间可以调用一个函数来检查堆是否有效,这可能使失败更接近破坏点
HeapValidate是此类例程的一个示例,但这取决于您使用的平台
当您使用delete[]
而不是delete
时,也会发生此错误。 但是,如上所述,这只是许多原因之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.