您的位置:首页 > 其它

其原因可能是堆被损坏 这说明exe中或它所加载的任何 DLL 中有 Bug

2015-07-09 10:21 267 查看
可参考的博客:http://www.cnblogs.com/ShaneZhang/archive/2013/12/18/3480754.html

参考讨论:http://bbs.csdn.net/topics/40214261

原因:

1)因为new的地址在a处,而delete的地址在b处;

2)地址不存在或者未分配,也会导致这种错误;

3)数组太小,给了一个很长的值,然后delete也会出现这种情况。

解决方案:检查new的地址,跟踪并发现地址的变化,即可解决问题。

案例:

1,产生一个模态对话框,但并未用new函数,而在对话框的类中自行delete this,而导致出错。

2, char *sql=new char[100];sql="select * from table";delete []sql;出错,经过跟踪,发现sql的地址出现了错误,原来sql=使得sql指向的地址变化了,将sql=变成sprintf()赋值,则可以解决问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bug 解决方案 对话框