[VC60]CInternetConnectionでWarning

[戻る]
WAL [E-Mail] 2001/11/06(火) 18:10:19
初めまして、現在FTP関連のソフトを構築しているのですが
どうしてもCInternetConnectionの関係でWarningが発生してしまいます。
どこをどう直してよいやら、ヘルプを見てもわからず参考になるサイトを
探しているうちにこちらへたどり着きました。

エラーとしては以下のものです。
>Warning: Disconnecting CInternetConnection handle 00CC0008 in context 00000001 at destruction.

原因はだいたい検討はついているのですが対処がわかりません。

CInternetSession *pSession = new CInternetSession(); 
CFtpConnection *pFTP = NULL; 
pFTP = pSession->GetFtpConnection(strServer, strName, strPass,iPort);

これでコネクトをはかり、次にファイルをゲットします

//サーバーのディレクトリを移動
if(!pFTP->SetCurrentDirectory(strSrvdirectory))
{
  delete pFTP; 
  pSession->Close();
  delete pSession; 
  return FALSE; 
}

if(!pFTP->GetFile(strRemote, m_pApp->m_strDwlfullpath + strLocal)) 
{
  delete pFTP; 
  pSession->Close();
  delete pSession; 
  return FALSE; 
}

delete pFTP; 
pSession->Close();
delete pSession; 

これでファイル自体は正常にFTPサーバから取得できるのですが、delete pFTPを行うと
上記に書いたようなWarningが発生します。
かといって、delete pFTPをコメントアウトすると当然リークが発生してしまいます。

このWarningは気にしないよいものなのでしょうか?それとも何か手順は間違えていますでしょうか?
皆様のお知恵をお貸しください。

loca 2001/11/07(水) 13:18:37
門外漢なのであくまで参考意見ですが。

MFCのサンプル「ftptree」と見比べて気になったのは
pFTPに対してClose()を呼び出していない、といったところですね。

デバッグ実行で delete pFTP の中をステップインしてみれば
Warningを出力しているソースの位置がわかると思います。

では。

WAL [E-Mail] 2001/11/07(水) 20:02:51
[[解決]]
その通りだったようです(^^;;;
deleteを消すとリークが起きるので、よくよく考えたらcloseしなきゃいけなかったようで...
ご回答ありがとうございました。

古いスレッドには追加発言できません。