windows已在xxx.exe中触发一个断点,其原因可能是堆被损坏,这说明xx.exe中或它所加载的任何DLL中有bug。
原因也可能是用户在xx.exe具有焦点时按下了F12。
输出窗口可能提供了更多诊断信息 。
我出现类似错误的情况是:
建立一个链表,在向链表插入完数据析构并释放掉链表的时候出现的错误。
为什么不知道,但是是这样解决的:
把插入链表的对象修改成 Type * p = new Type()的形式,然后直接传递指针,不要Type p,然后传递&p,这样就会报错。
可能Type p这种申请一个变量还是临时的变量,在插入其引用的时候数据可以很好的传递,但是释放链表的时候,应该只有一个p,因为这是个静态临时变量,内容一直在变化,但内存只有一个。而new每次都是新开辟一个空间。
这样在最后释放链表的时候,不至于只释放一个p的空间。
探讨了在Windows环境中因堆损坏触发的断点问题,特别是在链表操作中出现的常见错误。分析了错误产生的可能原因,包括DLL中的bug和用户误操作,并分享了一种解决方案,即使用new分配内存来避免析构时的错误。
22万+

被折叠的 条评论
为什么被折叠?



