我用WINDOWS自带的管理器查看刚才15.732k现在15.880k一天大概1000K吧我的程序是用到CSOCKET,数据库方面用ADO
没发现怎么内存泄露啊,奇怪了。

解决方案 »

  1.   

    一直增加就有问题。
    我这两天也碰到个怪的vista下面不涨2008下面涨
      

  2.   

    你要知道,Windows有个很大的缺点,他的内存管理。并不是那么完美的。你这样的情况对于Windows来说并不稀奇,不然人家2003服务器为什么开段时间就要重启下?红帽就不用
      

  3.   

    关键是增长速度有没有加快~~~如果没有,你可以放心了~~~
    现在哪台机器每个几个G的内存~~~
    一天一M~~~~一年才300多M~~~毛毛雨~~~
    你的程序能稳定运行1年~~~吃掉300M内存太值了~~~呵呵
      

  4.   

    // 定义ADO连接变量指针
    _ConnectionPtr m_pConnection; m_pConnection.CreateInstance(__uuidof(Connection));

    // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
    // 因为它有时会经常出现一些想不到的错误。jingzhou xu
    try                 
    {
    // 打开本地Access库Demo.mdb
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CXY_CZ.mdb","","",adModeUnknown);

    }
    catch(_com_error e)
    {
    AfxMessageBox("数据库连接失败,确认数据库CXY_CZ.mdb是否在当前路径下!");
    return -1;
    }  try{
    _CommandPtr m_pCommand;
    m_pCommand.CreateInstance("ADODB.Command");
    m_pCommand->ActiveConnection = m_pConnection;///非常关键的一句,将建立的连接赋值给它
    m_pCommand->CommandText = (_bstr_t)strinsert; _variant_t vNULL;
    vNULL.vt = VT_ERROR;
    vNULL.scode = DISP_E_PARAMNOTFOUND;///定义为无参数// m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///执行命令,取得记录集
    // if(m_pConnection->State){
    m_pConnection->Close();
    // }
    m_pConnection.Release();
    m_pConnection= NULL;      
    m_pCommand=NULL;
    }
    catch(...)
    {
    //已经重复输出错误
    CString strerror;
    ErrorClass errorclass;
    strerror.Format("数据库执行Execute异常,当前SQL语句为--%s",strinsert);
    errorclass.PrintErrorToINI(strerror);

    strinsert.ReleaseBuffer(strinsert.GetLength());
    // return ;
    }  strinsert.ReleaseBuffer(strinsert.GetLength()); return 1;整个函数体哪里有问题了
      

  5.   

    增加不代表不正常
    同样,不增加也不代表正常
    这个只能凭经验了
    举个例子
    如果你的客户在持续增加
    那么链接也在持续增加
    如果你的链接都是即时new的结构或者类
    而不是线程池
    那持续增加内存就很正常了
    为什么说不增加也不代表正常呢
    如果你的客户在持续减少
    但是内存没变
    那说明问题了
      

  6.   

    小的内存泄漏  几乎可以忽略不计  因为后期找内存泄漏的成本会非常高  而带来的收益又很小
    1天1M   现在的服务器动辄8G 16G的内存  你这个可以忽略 
      

  7.   

    变量在使用后,如果不再使用了,特别是指针之类的 new之类分配的,一定要del
      

  8.   

    持续增长的话估计是有内存泄漏。
    有的时候在非常隐秘的地方,很难发现。
    不一定new del才会造成泄漏,比如用了什么现成的类,在你不知道的时候申请了内存,而你又没有调用相应的函数去释放。
    不过你的问题感觉不太严重。
      

  9.   

    看看你的程序里面是不是new了很多内存,new了之后是不是没有及时删除或者忘记删除了。
    我记得有人写了几个类和lib加到你工程中间能够检测你那里内存泄露了,具体不大记得了。
    楼主去搜索一下vld.lib vldapi.h, vld.h, vldmt.lib, vldmtdll.lib等文件,应该可以找到相关的类和使用方法的,祝好运。。
      

  10.   

    m_pCommand->CommandText = (_bstr_t)strinsert; strinsert是CString吗?是的话建议不要这样用。在外面构造一个_bstr_t,把strinsert的值给他
      

  11.   

    代码没有看出什么问题,这种问题一般比较隐蔽不好发现,处理关注new的地方,最好也关注下CString类的操作,