100分求助解决内存问题,在线等,急啊~~~
有一段从IC卡读数据的代码,每次读去一段数据后内存回增加,但是读完以后内存并不减少,请高手指点。不够再开贴加分。
下面是这段读数据到磁盘上的代码。
HINSTANCE hDllHandler = LoadLibrary("MCS_SR.dll");
if (hDllHandler == NULL) //没有找到资源
{
return FALSE;
}
WORD (FAR __stdcall * pAT45D_BundleReadChar)(DWORD _dwAddr,DWORD _dwLength,BYTE *_bReadData);
pAT45D_BundleReadChar = (WORD (FAR __stdcall *)(DWORD,DWORD,BYTE *))(GetProcAddress(hDllHandler,"AT45D_BundleReadChar"));
FILE *fp;
char fname[MAX_PATH];
unsigned char temp[265] = {0};
CString strCurDir = ((CITMAApp *)AfxGetApp())->GetAppDirectory();
sprintf(fname,"%stemp.dat",strCurDir);
if((fp=fopen(fname,"wb+")) != NULL)
{
reader.MCS_SetStringMode(HEXADECIMAL);
WORD flag = 0;
//开始按照页读取数据
int i = wFirstPage;
i = 0;
wFirstPage = 0;
wLastPage = 2047;
for (; i <= wLastPage; i++)
{
flag = pAT45D_BundleReadChar(i,264,temp);
if(flag)
{
reader.Close();
fclose(fp);
return false;
}
::PostMessage(hWnd,WM_HAVEDONECOUNT,(WPARAM)(i - wFirstPage),(LPARAM)(wLastPage -wFirstPage) );
fwrite(temp,264,1,fp);
if(::WaitForSingleObject(KillThreadEvent,0) == WAIT_OBJECT_0)
{
break;
}
}
fclose(fp);
}
if (hDllHandler != NULL)
{
FreeLibrary(hDllHandler);
hDllHandler = NULL;
TRACE0("已释放动态链接库:MCS_SR.dll\n");
}