vc获得网页内容CInternetSession和CHttpFile导致内存泄露

在vc中采用CInternetSession 和CHttpFile 建立访问网页函数并在多线程下调用
导致内存泄露。这种泄露短期内无法察觉 必须运行长时间才能看出。
泄露函数如下:
CString gethtmlcontxt(CString strURL,int outtime )    
{      
   try
   {
 
 CInternetSession mySession(NULL, 0);       
 CString m_strHTML, myData;    
 CHttpFile *myHttpFile = NULL; 
    
// mySession.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,outtime);
 myHttpFile=(CHttpFile *)mySession.OpenURL(strURL);      
 while(myHttpFile->ReadString(myData))      
 {      
  m_strHTML= m_strHTML+ TEXT(" ") + myData;      
 }      
 myHttpFile->Close();      
 mySession.Close();      
 return m_strHTML;   
   }
   
   catch (CException* e)
   {
    e=NULL;
   }
   return "";
  
} 
后改成winnet访问网页问题解决.
//下载网页html内容

CString   getwinnetweb(CString url)
{
  CString str="";
 try
 {
  char* szUrl  = _T(url.GetBuffer(0));
  url.ReleaseBuffer();
  TCHAR szAgent[] = _T("");
  HINTERNET hInternet1 =  InternetOpen(_T("serverassistant"),INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,NULL);
  if (NULL == hInternet1)
  {
   InternetCloseHandle(hInternet1);
   return "";
  }
  
  HINTERNET hInternet2 =  InternetOpenUrl(hInternet1,szUrl,NULL,NULL,INTERNET_FLAG_NO_CACHE_WRITE,NULL);
  if (NULL == hInternet2)
  {
   InternetCloseHandle(hInternet2);
   InternetCloseHandle(hInternet1);
   return "";
  }
  
  char szBuffer[1024] = {0};
  DWORD dwByteRead = 0; 
 
  
  // 循环读取缓冲区内容直到结束
  while (InternetReadFile(hInternet2, szBuffer, 1023, &dwByteRead) && dwByteRead > 0)
  {
   str+=szBuffer;
   
   // 清空缓冲区以备下一次读取
   ZeroMemory(szBuffer, sizeof(szBuffer));
  }
  //ofs.close();
  
  //AfxMessageBox(str);
  InternetCloseHandle(hInternet2);
 InternetCloseHandle(hInternet1); 
 }
 
 catch (CException* e)
 {
  e=NULL;
 }

 return str;
}