BSTR bstrSQL = CommandText.AllocSysString();
HRESULT hr = pRs->Open(bstrSQL, _variant_t((IDispatch*)m_pConnection,TRUE), adOpenStatic, adLockOptimistic, adCmdText);
if(SUCCEEDED(hr))
{
    while(!pRs->adoEOF)
    {
        ......
        pRs->MoveNext();
    }
    pRs->Close();
}如果频繁的执行此段程序(1分钟一次),发现内存在持续增长,不只是怎么回事。
请指教,谢谢!

解决方案 »

  1.   

    尝试把sqlserver实例的属性那里把内存管理设置一下
      

  2.   

    to lzd(活着便精彩):能不能说的再具体点,怎么改?
      

  3.   

    In the rare case the client receiving the returned string does not free memory in the string, you might have to free it yourself by using ::SysFreeString.
      

  4.   

    BSTR bstrSQL = CommandText.AllocSysString();我不太清楚这段代码的详细情况,不过我看到了这句话,从表面意思看是alloc内存了,而没有相应的Free
      

  5.   

    当前是存在没有Free的问题,正在测试中以前用记录集进行操作时,用的是CRecordset类,频繁进行Open、Close操作,内存确实会持续增长,不知各位又没有遇到过?
      

  6.   

    内存长应该是SQL Server的内存在长吧,你自己的程序应该不会增长的,这是正常的,SQL Server所占内存增长到一定程度以后就会停止不长的,它自己有自己的一套内存管理机制,不必担心的,如果是你自己的程序在不断增长内存,那你while循环里就有问题了。