长时间将数据显示到界面上,会导致内存持续增长吗?
上午跑了4个小时,内存从16200KB增加到了18100KB,并且一直不释放内存(等了半小时,内存还下降)
主要是
while(true)
{
1. 处理数据
2. 将数据显示到MFC界面上
//获取edit control编辑框的句柄
CEdit *p = (CEdit*)pDlg->GetDlgItem(IDC_EDIT1);
//显示到窗体
p->SetWindowText(pDlg->m_str);
free(p);
p = NULL;
}
测试了一下,将2注释掉,即窗体界面不显示数据,则内存几乎不增长。
请教,这是为啥?将数据持续的显示到窗体上会使得内存大涨?
------解决思路----------------------
wince上是有这个问题,要看你的代码怎么写了。特别要注意gdi相关的封装。如果用纯API就没有问题。
------解决思路----------------------
p 是不用 free 的,你的写法有问题
------解决思路----------------------
IDC_EDIT1是否有子类化?没有感觉SetWindowText不会有问题。或者是m_str引起的。
你试试p->SetWindowText(L"1234567890");做这样的实验。我记得这个接口是没问题才对。
我自己的控件都被重写,没用这些接口了。
------解决思路----------------------
LZ 可以试试将控件的获取放到 while(true) 之外,经常用这些控件,还真没有遇到 LZ 所说的问题。
即将 CEdit *p = (CEdit*)pDlg->GetDlgItem(IDC_EDIT1); 放到循环之外试试吧。
------解决思路----------------------
自己写一个程序控制自己的界面,完全不用GetDlgItem之类的。直接用成员变量指向就行了。