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

可参考的博客: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()赋值,则可以解决问题。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013737526/article/details/46813335
个人分类: c++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭