那线程我只能RETURN 0 让他自动返回结束?为什么要提供个exitthread呢?
非常感谢你的回答,非常有道理啊我现在那程序估计和这个关系不大了,因为我发现他运行过程中内存也小量递增从9:06 5924k
10:07 5928
10:23 5964资源管理器看的,他不是每秒递增,而是分时间段,而且时间段内不规则递增而代码内我比喻:
线程中
while(1){ if(A(a)){}
 else {
   B(a);
 }}其中A ,B都是硬件供应商提供的DLL接口,而a是个外类的static handle* 
有问题吗对另外一帖的回答者感敬意,同时开新帖再讨论

解决方案 »

  1.   

    DLL的数据空间是和调用者进程在同一空间的,如果DLL有内存泄漏也会出现泄漏,可以用purify之类的工具查一下。
      

  2.   

    return也是返回,exitthreads是可以给退出线程一个退出码..可以用来判断线程退出的各种状态只要随时间,内存不断增加,一直不降下来,那么就有内存泄漏多检查new等是否delete
      

  3.   

    A thread that uses functions from the static C run-time libraries should use the _beginthread and _endthread C run-time functions for thread management rather than CreateThread and ExitThread. Failure to do so results in small memory leaks when ExitThread is called. Note that this is not a problem with the C run-time in a DLL.
      

  4.   

    估计有地方的内存本来应该delete的,没有去做!楼主自己检查一下代码!
      

  5.   

    也遇到过这样的问题,new的东西感觉好麻烦,一定要delete[]的,有时候就忘记了。
      

  6.   

    还是用boundschecker查一下省事。
      

  7.   


    用 boundschecker的确是个很高效的方法 。
    如果有 delete语句,但是实际因为某种原因没能执行到,也会引起内存泄露。
      

  8.   

    UMDH,非常不错。等到内存上涨的时候查看
      

  9.   

        支持用 boundschecker。
      

  10.   

    解决new delete的方法是不是重载new,在程序退出时释放啊?
      

  11.   

    boundschecker我就是用了他查的只在退出时才提示泄漏
    事实上这个退出泄漏我也找到原因了
    是线程退出CSTRING不由你释放boundschecker也不是太强你试试编个按钮加int *p;for(int i=0;i<1000;i++)
    {
      p=new int[i*100];
    }然后用BOUNDSCHECKER测试
    不提示泄漏的加不加DELETE都一样
      

  12.   

    我检查内存泄漏一般方法:1. 先查是否所有申请内存都释放,包括:
    new / new [] ----  delete / delete []
    malloc ----   free
    CoTaskMemAlloc ----  CoTaskMemFree
    SysAllocString ----   SysFreeString
    SafeArrayCreate ----   SafeArrayDestroy
    CreatePen/CreateBrush ----  DeleteObject
    GetDC ----  ReleaseDC
    ITypeInfo::GetTypeAttr()   ----   ITypeInfo::ReleaseTypeAttr()
    COleSteamFile::OpenStream,
    CreateStream, CreateMemoryStream   ----   COleStreamFile::Close()2. 使用performance察看内存在哪个时段增加后没有释放。在cmd中键入perfmon,就可以打开,至于怎么用上网自己查。3. 再就是使用一个类CMemorySate,来查看某段代码申请内存后是否释放。这个类很简单自己看看MSDN就能会用。
      

  13.   

    楼上的 CMemorySate 
    跟你学了一招
    下次用用 呵呵
      

  14.   

    new/new[] 和 delete/delete[]是一一对应的,如果你new[] 却delete,那么你只能删除一个对象,剩下n-1个不能释放,会内存泄露;如果你new,却delete[],那么可能会除了释放你new的内存之外,还会释放其他内存  你看看《effective c++》有一条专门讲这个的