长期运行一个个函数内存耗尽是怎么回事?

hafoo 2005-12-16 09:02:56
我启用了一个定时器
CCAss::Hanshu(CString str1,CString str2,double db1)
{

}
我发觉每次进入该函数时,任务管理器中的进程显示内存使用就增加了很多100k
其中多次用到Cstring对象,在函数退出时,内存使用又增加了不少,我用str1.empty()释放都不可以
定时运行近2000次后计算机内存就被耗尽,提示out of memory
...全文
124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaaong 2005-12-16
  • 打赏
  • 举报
回复
你这个pItem指针所指向的内存是在堆上分配的,
m_PageList.AddTail(pItem);
这一句使改内存上的对象添加到了m_PageList上了。你现在删除这个对象肯定会有问题。
你应该在m_PageList对象释放的时候才删除的。
hafoo 2005-12-16
  • 打赏
  • 举报
回复
函数内的局域指针为什么不可以在函数里面释放呢?
Atomictry 2005-12-16
  • 打赏
  • 举报
回复
在 CDockPageBar::AddPage函数外面定义一个CPageItem *pItem指针;
在 AddPage里pItem = new CPageItem();

最后在退出主程序的时候delete pItem; pItem = NULL;
hafoo 2005-12-16
  • 打赏
  • 举报
回复
我调试的时候,跟踪到CSTRING的地方就内存泄露呀
有些地方,
BOOL CDockPageBar::AddPage(CWnd *pWnd, LPCTSTR sText, UINT IconID)
{
ASSERT(IsWindow(pWnd->m_hWnd));
CPageItem *pItem;//该指针要delete掉吗
pItem = new CPageItem();
pItem->m_pWnd = pWnd;
pItem->m_pWnd->SetParent (this);
pItem->m_strLabel = sText;

CClientDC dc(this);
HFONT oldFont = (HFONT)dc.SelectObject(m_font);
pItem->m_uiTabWidth = dc.GetTextExtent (sText).cx;
dc.SelectObject(oldFont);

if(IconID)
{
pItem->m_hIcon = AfxGetApp()->LoadIcon(IconID);
pItem->m_uiTabWidth += 18;
}
else
pItem->m_hIcon = NULL;

pItem->m_uiTabWidth += 9;

if(pWnd)
{
CRect rect;
//hubin 2004-6-28
pWnd->GetClientRect(rect);
int cx=rect.Width();
int cy=rect.Height();
CWnd::GetClientRect(rect);
cx-=rect.Width();
cy-=rect.Height();
if(cx<=0)
cx=0;
if(cy<=0)
cy=0;
if(cx>0 || cy>0)
{
GetWindowRect(rect);
GetParent()->ScreenToClient(&rect);
rect.right+=cx;
rect.bottom+=cy;
MoveWindow(rect);
CSize newsize(rect.Width(),rect.Height()+ITEMBUTTON_HEIGHT);
m_szHorz = m_szVert = m_szFloat = newsize;

}
//////////////////////////;
GetClientRect(rect, m_PageList.GetCount()>1?TRUE:FALSE);
pWnd->MoveWindow(rect);
pWnd->ShowWindow(SW_HIDE);
}

m_PageList.AddTail(pItem);
UpdateWindow();
//但是delete pItem会导致错误
return TRUE;
}
hafoo 2005-12-16
  • 打赏
  • 举报
回复
每次定一个Cstring 对象,就会有内存增加
每次定义一个类的对象,并赋值时就会导致内存增加
而且都释放不掉
菲斯可儿 2005-12-16
  • 打赏
  • 举报
回复
应该不是CString的问题,可能有其他内存泄露。
sad_4978 2005-12-16
  • 打赏
  • 举报
回复
内存泄漏。
hafoo 2005-12-16
  • 打赏
  • 举报
回复
m_PageList是个全局函数呀,要在析构函数中释放吗?

16,551

社区成员

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

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

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