C++中提示 堆损坏 内存冲突 程序异常中断......

最近在做项目时,开发的算法在win32中独立运行没有问题,移植到MFC框架中,运行一直保存,并且每次报错的地方和报错的内容都不一样,排查十分困难,差不多花了我三四天的时间,今天晚上终于搞定了!

每次报错的内容大概有以下几种:

1.堆损坏;

2.内存冲突;

3.异常中断;

。。。。。。

我也曾经怀疑过是自己内存开辟出错,请教别人也没有看出(算法量太大,别人无法仔细查看),而且每次出错的地方也都不一样(MFC框架在多线程中运行)。

经过几天的调试(也不是全天都在调试),发现都是低级的错误,主要有以下几种:

1.内存开辟使用完后没有及时的释放,程序循环运行时,内存崩溃;

2.循环体外开辟的内存在循环体内释放,导致一次开辟多次释放,内存管控异常;

3.申请的内存跨线程使用,但是释放的地方有误(还没有使用完就提前释放了);

经过上述的内存检查后,程序还是崩溃!我真的无法再排查了,请教他人无果。

在我快要崩溃的时候,但想到程序不久就要在产线试运行!我下狠心了,将自己写的代码,又从前至后一遍遍的看,一遍遍的调试,终于发现代码中有两行在复制其它的代码时,名称没有更改(名称太相似了,不仔细看很难看出!),修改后,程序终于一路畅通!,这种感觉爽爆了!


心得体会:

作为程序员,必须要细心!,而且还要有良好的编程习惯!此外,遇到问题一定不要轻易放弃,一定要顶住压力,求责于己,静心排查!相信自己,一定可以排除万难!




猜你喜欢

转载自blog.csdn.net/qq_33810188/article/details/80739085