捉虫记录:解决内存泄漏问题

LinJM   2014_05_23

解决内存泄漏问题

VS2010Debug模式下面,点击运行,然后退出,之后会在输出框里面出现内存泄漏信息(如下图所示)。

 捉虫记录:解决内存泄漏问题_第1张图片

Analysis:主要是new了之后没有delete相应的变量,所以,很明显就是要在不使用时delete掉这个变量。不过,有个问题,如下图所示:

 捉虫记录:解决内存泄漏问题_第2张图片

我代码修改位置如下所示:

 捉虫记录:解决内存泄漏问题_第3张图片

我把红下划线部分注释掉就不会出现上面那个问题,后来讨论分析才发现pBim现在分配给了pAdjustmentLyInfo,二者现在指向同一个内存空间,当我deletepBimpAdjustmentLyInfo也就不能使用了,这就出现了问题。因此,我就在外方,就在红下划线下面那个注释掉的一行中删除这个空间,这样就解决了内存泄漏问题。


转他人经验:

——————————————————————————————————————————————————

 捉虫记录:解决内存泄漏问题_第4张图片

——————————————————————————————————————————————————

另外一个bug

HEAP CORRUPTION DETECTED: after Normal block(#715) at 0x056B0040. CRT detected that the application wrote to memory after end of heap buffer.

这是典型的内存溢出错误,常在内存的delete处发生,而且一般在debug版本中可能出现,release版本中可能并不报错。出现这个错误的原因一般都是操作new申请的内存溢出,因为在c++中,如果用new分配一段内存,操作的时候改变了该部分的大小,在delete时就会出错。

本code出现地方如下:

原因是在程序的进行中pData的值大于了预分配的内存空间。


本文地址:http://blog.csdn.net/linj_m/article/details/26703859 

更多资源请关注 博客:LinJM-机器视觉 微博:林建民-机器视觉

你可能感兴趣的:(debug,内存泄漏)