*******关于栈上动态分配的内存*******

mercurybob 2007-06-23 11:02:38
1、
void CTest::Test(void)
{
CObject* pObject = new CObject();
pObject->AddObject();
}

2、
void CTest::Test(void);
{
CItem* pItem = new CItem();
m_pItem = pItem; // m_pItem为成员变量;
}
看看会不会发生内存泄露?

...全文
329 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mercurybob 2007-06-23
  • 打赏
  • 举报
回复
已经解决.
SoftBomb 2007-06-23
  • 打赏
  • 举报
回复
1:不再使用之后立刻释放;
2:在析构中释放;
3:专门编写释放函数;
mercurybob 2007-06-23
  • 打赏
  • 举报
回复
同题:
CMap<UINT, UINT&, WINDOWPLACEMENT*, WINDOWPLACEMENT*&> m_mapWindowPlacements;

void CTest::Test(void);
{
UINT nID = 0;
pstWindowPlacement = new WINDOWPLACEMENT;
ZeroMemory(pstWindowPlacement, sizeof(WINDOWPLACEMENT));
m_mapWindowPlacements[nID] = pstWindowPlacement;
}

如何释放才安全? 应该在什么地方释放它?
freeman868 2007-06-23
  • 打赏
  • 举报
回复
在函数中没有进行释放,如果在函数外也不进行释放的话就会泄漏
我啃 2007-06-23
  • 打赏
  • 举报
回复
记住,除了auto_ptr等smart_ptr之辈会自动释放(管理)内存外,所有的new必须要和delete搭配使用
我啃 2007-06-23
  • 打赏
  • 举报
回复
会,destructor并不会对成员指针进行内存的释放要自行释放
huashizhixin 2007-06-23
  • 打赏
  • 举报
回复
没看到释放就是泄露
to_ker 2007-06-23
  • 打赏
  • 举报
回复
AddChildItem 函数内部释放
mercurybob 2007-06-23
  • 打赏
  • 举报
回复

void Text(void)
{
CItem* pCatMisc = GetParentItem();
CItem* pItem = pCatMisc->AddChildItem(new CItem(nID,lpszText); // 这个new该在什么地方释放?
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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