为什么 内存使用 一直增加

chiengod 2005-03-01 11:51:06
我在服务里用Timer来读ini file
updatehostname=new TStringList();//updatehostname 是全局变量
ReadIniFile();
delete updatehostname;

ReadIniFile() //ReadIniFile如下
{
int len;
TIniFile *ini=new TIniFile(ExtractFilePath(ParamStr(0))+"data.ini");
lastWANIP=ini->ReadString("ip","lastIP","");
username=ini->ReadString("userinfo","username","");
password=DecodeString(ini->ReadString("userinfo","password",""));

updatehostname->Clear();
ini->ReadSectionValues("updatehostname",updatehostname);
delete ini;
for(int i=0;i<updatehostname->Count;i++)
{
len=StrLen(updatehostname->Strings[i].c_str())-10;
updatehostname->Strings[i]=updatehostname->Strings[i].SubString(11,len);
}
}
为什么 内存使用 一直增加呢,用codeguard没发现有内存问题呀,请高手说说为什么?
...全文
159 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chiengod 2005-03-02
  • 打赏
  • 举报
回复
注:我在程序中用了NMHTTP,而且在函数中定义了一些变量,这些函数频繁调用,不知会不会是这方面的原因呢!
Waiting4you 2005-03-02
  • 打赏
  • 举报
回复
是操作系统的调度问题,没关系的
wilsonloveada 2005-03-01
  • 打赏
  • 举报
回复
TIniFile *ini=new TIniFile(ExtractFilePath(ParamStr(0))+"data.ini");
delete ini;

以上两条语句虽然没有错,但如果Timer的时间间隔太小,可能会因为创建和释放内存过于频繁,而导致系统不能及时释放,因此使用内存就会一直往上涨。
建议不要在长时间且执行频率高的函数中用new 或delete语句,你可更改一下!
chiengod 2005-03-01
  • 打赏
  • 举报
回复
cgl文件看了,没发现什么呀。new 和 delete 次数相同呀。
我还发现:当加个showmessage后,内存使用增加的更明显,当增到一定值时,好象就不变了!
constantine 2005-03-01
  • 打赏
  • 举报
回复
这种问题一般都先打开cg看看先

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧