一个SDI程序,在其中启动一个线程,不断往外发数据。运行后有个奇怪的现象:我从Windows任务管理器里看到,该"进程"占用的内存以1秒大约20多k的速度增加;停止"线程"后,显示占用的内存不增加也不减少;但是如果我将程序最小化(注意:只是最小化,没有停止程序或线程的运行),可以看到占用的内存一下子变成1300k, 然后又开始以1秒20多k的速度增加。 过一段时间后最大化、最小化,占用内存又变回1000多k,然后增加. 如是重复多次,结果都是一样。我的问题是:
1、是不是我的线程里造成了内存泄露?
2、为什么程序的最小化会释放内存?谢谢高手们的指教!

解决方案 »

  1.   

    你的线程发出去的的数据是自己new出来的吗,还是从另一个地方接受到的处理一下再转发出去?不过不管怎样,最后接受的地方都要负责delete这块内存。
    是否造成内存泄露主要还是看你的程序的进程虚拟内存是不是一直持续增长。
    另外,最小化窗口可以释放应用程序当前使用的一些内存,这是操作系统的一个优化功能,将应用程序不用的内存释放掉,但是虚拟内存不会因为最小化而改变。