我的程序是在CE下运行的,就是每隔一分钟保存一次数据,下断这段子程序每分钟执行一次,但我发现每隔一分钟可用内存就会减少,请大家帮我分析一下,谢谢了!
void SaveHistoryData()//保存历史数据
{
CString tmp1,temp2;;
CTime m_time; CString fileName,LastYearFileName;
CString tempstr=_T("");
CFileException e;
CFileStatus  fileStatus; 
CTime FileDate,LastYearData;
CTimeSpan OneYear(365,0,0,0); FileDate=CTime::GetCurrentTime();
LastYearData=FileDate-OneYear; tempstr=LastYearData.Format(_T("%Y%m%d"));
tempstr+=_T(".txt");
fileName=_T("\\SDMEM\\RolandView\\历史数据\\")+tempstr; if(fileName!=FileNameDeleted)
{
if(CStdioFile::GetStatus(fileName,fileStatus))//文件存在
{
DeleteFile(fileName);//删除一年前的文件
}
FileNameDeleted=fileName;
} tempstr=FileDate.Format(_T("%Y%m%d"));
tempstr+=_T(".txt");
fileName=_T("\\SDMEM\\RolandView\\历史数据\\")+tempstr;
if(!CStdioFile::GetStatus(fileName,fileStatus))//文件不存在
{
CStdioFile HistoryFile(fileName,CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone);
HistoryFile.SeekToEnd();
tempstr=_T("Date\tTime\tT\tH\tP\tAir Change Rate\t");
if(tempstr.GetLength()%2)
tempstr+=_T(" ");
tempstr+=_T("\r\n");
HistoryFile.Write(tempstr,tempstr.GetLength()*2);
HistoryFile.Close();
} CStdioFile HistoryFile(fileName,CFile::modeWrite|CFile::shareDenyNone);
HistoryFile.SeekToEnd();
m_time=CTime::GetCurrentTime();
tempstr=m_time.Format(_T("%m\/%d\/%Y\t"));
HistoryFile.Write(tempstr,tempstr.GetLength()*2);
tempstr=m_time.Format(_T("%X"));
HistoryFile.Write(tempstr,tempstr.GetLength()*2); for(int i=0;i<4;i++)
{
tempstr=_T("\t");
HistoryFile.Write(tempstr,tempstr.GetLength()*2);
switch(i)
{
case 0:
tempstr.Format(_T("%.1f"),DataDic[0].AI[3]+ParaVal[14]);//温度
break;
case 1:
tempstr.Format(_T("%.1f"),DataDic[0].AI[4]+ParaVal[15]);//湿度
break;
case 2:
tempstr.Format(_T("%.1f"),DataDic[0].AI[2]+ParaVal[16]);//压力
break;
case 3:
//tempstr.Format(_T("%.1f"),DataDic[0].V[6]+ParaVal[17]);//换气次数
tempstr.Format(_T("%.1f"),((DataDic[0].V[6]+ParaVal[17])*3600*0.007162)/(CageType_V[int(ParaVal[11])]*CageNum_V[int(ParaVal[11])][int(ParaVal[12])]*(ParaVal[13]+1)));//换气次数
break;
default:
break;
}
while(tempstr.GetLength()<6)
tempstr+=_T(" ");
HistoryFile.Write(tempstr,12);
} tempstr=_T("\t\r\n");
HistoryFile.Write(tempstr,tempstr.GetLength()*2); HistoryFile.Close();
}