写了一个递归查找文件程序,查找到的文件伴随一些处理函数,但我观察程序运行的时候发现这个程序在查找的时候会使程序占用的内存增多,(4MB左右到5MB左右)。
第二次查找几乎是从增多后的Size再增多(5MB左右到6MB左右)。感觉无法释放一部分内存似的。我的查找函数利用线程实现,查找结束或者停止查找就结束线程(没使用TerminateThread,是令其自己退出)。但是不是线程的资源就应该被释放了?
有人说我是内存泄漏问题,请问内存泄漏是如何造成的?据说是因为New的没有被Delete,但是所有的New都Delete了。请问这是为什么?谢谢。代码太多了,贴不出来。
第二次查找几乎是从增多后的Size再增多(5MB左右到6MB左右)。感觉无法释放一部分内存似的。我的查找函数利用线程实现,查找结束或者停止查找就结束线程(没使用TerminateThread,是令其自己退出)。但是不是线程的资源就应该被释放了?
有人说我是内存泄漏问题,请问内存泄漏是如何造成的?据说是因为New的没有被Delete,但是所有的New都Delete了。请问这是为什么?谢谢。代码太多了,贴不出来。
把代码贴出来看看,是不是New 和delete在调用过程中不配对同一个指针申请的内存没有释放,就又申请新的内存
如果是debug版可以定位到函数.
{
char* ptr=new char[1000];
}
这个程序,明显有内存问题,可是它是大可不必解决的.它没有明显的副作用.话扯远了,我认为楼主的问题可能不是new以后未能delete造成的,可能是一些handle未能free选成的.在查文件中最常用的FindFirstFile(),它返回一个handle,最后要调FindClose()去free那个handle. 楼主不妨查一查.按经验估计,楼主的这部分"泄漏"大概不是个"要命"的问题.