一个内存泄漏的问题请大家帮帮忙

ANDYLUAN 2002-03-27 01:32:08
程序每次都是提示在,m_pMainWnd=new CWnd() 处发生内存泄漏。

CWnd()代表我自定义的类我的类是从CWnd继承来的
...全文
22 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ANDYLUAN 2002-04-05
  • 打赏
  • 举报
回复
ok
EetyChen 2002-03-28
  • 打赏
  • 举报
回复
内存leak的情况很复杂呀
把代码拿来大家瞅瞅,好给你说说呀,不然就空对空
ANDYLUAN 2002-03-28
  • 打赏
  • 举报
回复
我的程序在运行中好像不会调用OnNcDestroy()
Erlin 2002-03-28
  • 打赏
  • 举报
回复
也可以重载void PostNcDestroy();

void PostNcDestroy()
{
delete this;
}
wuchunzhong 2002-03-28
  • 打赏
  • 举报
回复
我觉得对于窗口对象采用动态创建挺好的,这样就不须自己释放了,操作系统自己会释放:
CWnd *m_pMainWnd = (CWnd*)RUNTIME_CLASS(CWnd)->CreateObject();
m_pMainWnd->Create(........);
Erlin 2002-03-28
  • 打赏
  • 举报
回复

OnNcDestroy()函数不是由你主动去调用的,请看一下它的帮助。

This method is called by the framework when the nonclient area is being destroyed, and is the last method called when the Windows CE window is destroyed. The default implementation performs some cleanup, then calls the virtual method PostNcDestroy.

Override PostNcDestroy if you want to perform your own cleanup, such as a delete this operation. If you override OnNcDestroy, you must call OnNcDestroy in your base class to ensure that any memory internally allocated for the window is freed.



rovoboy 2002-03-27
  • 打赏
  • 举报
回复
有必要自己new吗?
weixiao 2002-03-27
  • 打赏
  • 举报
回复
对,在指向新对象之前,用这个指针把旧的对象释放掉!不然以后想释放就找不到地址了:)
AutopVision 2002-03-27
  • 打赏
  • 举报
回复
同上,UP!
armmy 2002-03-27
  • 打赏
  • 举报
回复
此问题我也遇到过,:-(。
在ExitInstance()加入

if (m_pMainWnd!=NULL)
{
delete m_pMainWnd;
m_pMainWnd = NULL;
}
wuchunzhong 2002-03-27
  • 打赏
  • 举报
回复
这是你的主窗口吧?对于所有的对象只要是new来初始化的,如果不用delete就会报那个错。

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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