咋回事呢,内存不断增加~~救命啊~~

dboy1981 2005-01-23 07:08:23
程序运行时占用的内存不断增加,但是在调试状态下没有检测到内存泄露,可能是什么原因? 编程工具:VC++
E_Mail:dboy1981@sina.com
如有遇到过类似问题,请指教,感激涕零~
...全文
574 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
dboy1981 2005-02-09
  • 打赏
  • 举报
回复
过年了,结帖~~~
dboy1981 2005-01-30
  • 打赏
  • 举报
回复
程序是过会儿增加4k内存,我用boundschecker检测过了,没有MEMORY LEAKS,有 Resorcse leaks,但我把画图部分的程序注释了,内存还是过会儿加4k:(郁闷~~
有谁能告诉我CDC的使用模型啊,怎么才能把刷子释放呢?
sboom 2005-01-30
  • 打赏
  • 举报
回复
内存泄漏,哈哈!
dboy1981 2005-01-30
  • 打赏
  • 举报
回复
还有,程序运行一段时间后,CPU占用率会很高,这是什么原因呢,出现死循环了?
dboy1981 2005-01-30
  • 打赏
  • 举报
回复
图片处理的代码如下:
CDC *pDC;
pDC = GetDC();

CRect Rect;
CStatic* pStatic = NULL;
COLORREF crColor;
int k;

for (k=0; k<14; k++)//画线
{
if (k>1 && m_Adam4053.arDataIn[Mapping(0)] && m_Lines[1].m_fV1>0 && m_Adam4053.arDataIn[Mapping(k-1)])
{//red
crColor = RGB(255,0,0);
}
else if (k>1 && (!m_Adam4053.arDataIn[Mapping(k-1)] || m_Lines[1].m_fV1<=0))
{//blue
crColor = RGB(0,102,255);
}
else if (k==1 && m_Adam4053.arDataIn[Mapping(0)] && m_Lines[1].m_fV1>0)
{//red
crColor = RGB(255,0,0);
}
else if (k==1 && (!m_Adam4053.arDataIn[Mapping(0)] || m_Lines[1].m_fV1<=0))
{//blue
crColor = RGB(0,102,255);
}
else if (k==0 && m_Lines[1].m_fV1>0)
{//red
crColor = RGB(255,0,0);
}
else
{//blue
crColor = RGB(0,102,255);
}

CLineTopo* pFlag = m_pLTHeads[k];
do
{
pStatic = (CStatic*)GetDlgItem(pFlag->lineID);
pStatic->GetWindowRect(&Rect);
ScreenToClient(&Rect);
pDC->FillRect(&Rect,&CBrush(crColor));

pFlag = pFlag->pNext;
}while (pFlag != NULL);
}

pStatic = (CStatic*)GetDlgItem(IDC_TF3);//变压器
if (m_Lines[1].m_fV1 <= 0 )
pStatic->SetBitmap(*pTF3B);
else
pStatic->SetBitmap(*pTF3R);

for (k=0; k<13; k++) //开关
{
pStatic = (CStatic*)GetDlgItem(arSwitches[k]);

if (k==0 && m_Lines[1].m_fV1>0
|| k!=0 && m_Lines[1].m_fV1>0 && m_Adam4053.arDataIn[Mapping(0)])
{
if (m_Adam4053.arDataIn[Mapping(k)])
pStatic->SetBitmap(*pSWCR);
else
pStatic->SetBitmap(*pSWOR);
}
else
{
if (m_Adam4053.arDataIn[Mapping(k)])
pStatic->SetBitmap(*pSWCB);
else
pStatic->SetBitmap(*pSWOB);
}
}

for (k=0; k<12; k++)
{
pStatic = (CStatic*)GetDlgItem(arOutTag[k]);
if (m_Lines[1].m_fV1>0 && m_Adam4053.arDataIn[Mapping(0)] && m_Adam4053.arDataIn[Mapping(k+1)])
pStatic->SetBitmap(*pOLR);
else
pStatic->SetBitmap(*pOLB);
}

ReleaseDC(pDC);
mashenka123 2005-01-25
  • 打赏
  • 举报
回复
我曾经遇到的这种情况,一个是由于while中不断申请内存导致,

一个是由于没有释放GUI对象导致的。

你仔细查查看,一定可以找出来的。

好运哦!!
bobob 2005-01-25
  • 打赏
  • 举报
回复
用boundschecker检测以下吧
或者把你有关图片处理的代码贴出来
dboy1981 2005-01-25
  • 打赏
  • 举报
回复
非常谢谢大家的建议,我会好好去调试的。
to delphihero(阿蒙(C++)):内存增加到20m以后就出现无响应状态,但没有死机。
我在程序里用了位图控件,并且根据定时检查采集到的数据变换图片,这里有什么需要注意的吗?
to CuteSword(灵剑):能介绍一下探测工具叫什么名字吗?
CuteSword 2005-01-24
  • 打赏
  • 举报
回复
分配的内存没有得到及时的回收。

网上有内存丢失的探测工具,自己找一个看看。
scxy 2005-01-24
  • 打赏
  • 举报
回复
看看在什么地方一直在申请内存
delphihero 2005-01-24
  • 打赏
  • 举报
回复
看看是否增加到一定程度就停止了,有些控件比如 edit 字符多少占用内存是不一样的
iamzxx 2005-01-24
  • 打赏
  • 举报
回复
加内存!
chenjunge 2005-01-24
  • 打赏
  • 举报
回复
同意fengqinggao(风清高
Martin_personal 2005-01-24
  • 打赏
  • 举报
回复
同意
iamltq 2005-01-24
  • 打赏
  • 举报
回复
我也有遇到内存狂增的情况,那是在写一个常驻程序时,在timer里面调用了一个函数,它是去创建硬件的实例,每创建一次就要分配一定内存,后来将这个函数放到初始化函数里去调用,即只调用一次,而不要每个timer都调用,就不会了.........
liuxianzhi 2005-01-24
  • 打赏
  • 举报
回复
有时候,你以为程序释放了内存,但事实上并没有释放。
我以前在用SAX方式处理xml的时候,就是一个delete操作由于放的位置不对,导致内存持续增长,程序退出的时候是正常的是否了内存,我吧delete操作往前放了几行就解决了。
所以,你需要更好的看看你的代码。
jun_01 2005-01-24
  • 打赏
  • 举报
回复
严重同意:
================
如果你关闭你的程序后,内存使用不降低,或者没有降低到你运行前的状态,说明你的程序存在内存泄露
如果你的程序在运行,一直内存增加,只能说明你一直在申请(使用)新内存,这时候是不知道程序是否有内存泄露的,因为有可能你申请的内存都是有用的
=================
老夏Max 2005-01-24
  • 打赏
  • 举报
回复
如果不是不断的增加那么肯定是有问题的,主要还是你循环操作的部分有问题,比如GetBuffer以后没有ReleaseBuffer,还有就是GDI对象没有删除,等等!
uoyevoli 2005-01-24
  • 打赏
  • 举报
回复
调试
MuseIn 2005-01-23
  • 打赏
  • 举报
回复
肯定是程序问题,debug
加载更多回复(4)

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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