写个要24小时运行的程序,可是发现每过几分钟内存会增加4KB,在网上查了不少关于内存泄露的资料,可是还是找不到内存泄露的原因,用到的new都跟着free释放掉了,CDC的几个句柄也释放掉了。用了visual Leak Detector这个软件检测,也没找出问题,后来我新建了一个空的对话框程序,发现内存也是在增加,增加的速度和我写的程序差不多,这是什么原因?

解决方案 »

  1.   

    用到的new都跟着free释放掉了  看到这个句话, 可能大家都 笑而不语了还有, 虽然你都跟了 释放 , 假设new, 你对应delete了, 还有 对于数组的释放, 你使用delete[]了吗.内存一真增长, 问题应该是出在某个会不停申请内存的地方, 具体跟踪下, 可能有不能释放内存的分支存在.
    注意使用RAII.对于长期运行的程序, 尽量避免动态申请内存, 因为会产生内存碎片, 虽然内存很多, 但却分配不到内存了.
    如果不能避免内存的动态申请, 那么考虑使用内存池.