I'm trying to use CFtpConnection GetFile to download files from a
WS_FTP server. I found if I download 1000 files (Size from 17KB to
25KB ), it can cause about 10M memory leaking. When I commented out
the GetFile( ) line, there was no memorry leaking. WHY?
Following is part of my source code:
try
{
// Request a connection to Image Server
//Use default FTP Port
//Use Passive MODE
pConnect =
sess.GetFtpConnection(strISIP,strFtpUser,strFtpPwd,INTERNET_INVALID_PORT_NUMBER,TRUE);
//Change FTP folder
pConnect->SetCurrentDirectory(_T("/Transfer"));
// use a file find object to enumerate files
CFtpFileFind finder(pConnect);
// start looping
BOOL bFoundFile = finder.FindFile(_T("*.pgp"));
while ((bFoundFile==TRUE)&&(nMaxImages<MAX_IMAGE_NUM))
{
bFoundFile = finder.FindNextFile();
strRemoteName=finder.GetFileName();
strLocalName=strLocalPath+strRemoteName;
// BOOL bFailIfExists = FALSE,
//DWORD dwAttributes = FILE_ATTRIBUTE_NORMAL,
// DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY,
// DWORD_PTR dwContext = 1
bGetFile=pConnect-
GetFile(strRemoteName,strLocalName,FALSE,FILE_ATTRIBUTE_NORMAL,FTP_TRANSFER_TYPE_BINARY,
1);
If get File Remove the file;
if(bGetFile==TRUE)
{
pConnect->Remove(strRemoteName);
}
nMaxImages++;
}
}
catch (CInternetException* pEx)
{
TCHAR sz[1024];
pEx->GetErrorMessage(sz, 1024);
pEx->Delete();
}
// if the connection is open, close it
if (pConnect != NULL)
{
pConnect->Close();
delete pConnect;
}