CoInitialize(NULL)
pConnection.CreateInstance("ADODB.Connection");
pConnection->Open(  ConnectionString.c_str() ,user.c_str() , pass.c_str(), adConnectUnspecified)
pConnection->Execute( cmdString.c_str(), NULL, adCmdText);
if (pConnection && pConnection->State ) 
  pConnection->Close();
pConnection.Release();
CoUninitialize();
我是在服务器中执行上边代码,不到一分钟就需要执行一次,更新数据库。 数据库为orcal。
执行一次,内存就会增加几百k。 我已经release了 为什么内存还会增加?

解决方案 »

  1.   

    pConnection 不要反复的打开,关闭,可以在你程序初始化的时候Open,以后都用这个pConnection来Execute,等程序退出的时候再Release
      

  2.   

    CoInitialize(NULL) 
    pConnection.CreateInstance( "ADODB.Connection "); 
    pConnection-> Open(     ConnectionString.c_str()   ,user.c_str()   ,   pass.c_str(),   adConnectUnspecified) 
    pConnection-> Execute(   cmdString.c_str(),   NULL,   adCmdText); 
    if   (pConnection   &&   pConnection-> State   )   
        pConnection-> Close(); 
    pConnection.Release(); 
    CoUninitialize(); 1分钟1次,只执行黑体的部分就好了~其他部分放到程序初始化/销毁部分去. 不需要重复做这些动作. 你现在这样, 又费子弹又费油
      

  3.   


    if  (pConnection  &&  pConnection-> State  )  
    判断的地方有问题吧,你都执行了,还判断什么
    直接 pConnection-> Close(); 不就行了
      

  4.   

    这次是每次只执行 Execute, 但是还有内存增加的现象。 不过是由每次增加几百k 到每次增加几十K。 还需要怎么修改呢?
      

  5.   

    ADO本身是有点问题.
    http://hi.baidu.com/auleaf/blog/item/61ecb8cb3de2c1fb52664f11.html