两个线程在跑,一个是主进程基本不作什么工作,只是定时(timer)调用子线程,
子线程中到是有很多字符串的操作,用CString 和char 数组混合完成的。
还有就是通过odbc操作数据库。通读了N遍也不知道哪里出的问题, 
20分钟了, 内存占用已经涨了200K, 真可怕 !!!可能会是哪个没想到的地方出的问题呢???? 啊啊啊啊啊啊, 快风了!

解决方案 »

  1.   

    根据你所说只有一种可能就是:
    你没有KillTimer
      

  2.   

    字符串的操作?CString类 就是字符数组。
      

  3.   

    用CString 和char 数组混合完成的 这很有可能是泄露的地方
      

  4.   

    我怀疑是char 和 CString 混合使用出的问题!我建议你把代码贴出来,别人才能帮你解答,凭空我没有这个本事!
      

  5.   

    代码很多, 而且比较繁琐, FAICHEN: 哪些数据库操作容易产生泄漏阿? 我用到的地方只有 open close 和 executesql
      

  6.   

    CString 不应该是自己管理内存的马?
      

  7.   

    有可能是数组的大小不够大,你仔细检查一下我曾经遇到过类似的问题查了好几天。
    比如: char Array[20];
           Strcpy(Array,"超过20个字符的字符串就会有问题!");      这样程序仍然可以运行,可是如果时间一长就会导致系统崩溃。
      

  8.   

    1、内存泄露是说一段内存被分配了,但是不能被引用(指针超出了作用域),也不能被释放了
    比如
    { char* p=new char[20];
    ...
    }
    //到了这里,如过p 没有释放,那就是内存泄漏(假如这段内存没有其他用途)
    2、内存泄漏是指针的引用不能访问
    造成一个Block区的内存不能访问
      

  9.   

    使用了多线程了吗?如果使用了就应该用TLS
      

  10.   

    查一下数据库操作的返回内容,我好像记得如果返回的是OLE字符串,需要你来释放。
    具体记不清了,查一查MSDN