4230|9

46

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

退出程序,不能关闭进程 [复制链接]

WINCE 6.0, VS2005
程序是一个任务管理器,几个对话框,主要操作是CTabCtrl加载几个对话框,(对话框由dialog create),在几个dialog中分别做的是1.每隔一段时间获得CPU和内存的状态,画图 2.获得当前运行的进程,显示于列表中 3.获得当前可见的窗口,显示与列表中

现在的问题是,通过按OK,或×, 表面上程序是退出了,但它的进程还在,有内存泄漏, 但是通过关闭进程,内存都能释放掉,程序退出的干净。
查了一下内存可能泄漏的地方,觉得应该都放掉了。疑惑...达人之路!

最新回复

有点乱了,于是又建了一个工程,再来,又可以了。 这个工程和以前的唯一的不同是关于定时画图,以前是通过timeSetEvent(500, 0, (LPTIMECALLBACK)TimeProc, (DWORD)this,TIME_PERIODIC | TIME_CALLBACK_FUNCTION) 创建一回调函数来实现,现在直接用OnTimer()来实现。 但现实控件文本的问题真的很奇怪,以后慢慢研究吧  详情 回复 发表于 2009-3-5 13:31
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
打开,关闭程序多次之后,可以在进程里看到存在着许多同一个进程名,可以关闭它,但同时串口也报错:
Exception 'Raised Exception' (-1): Thread-Id=075b0006(pth=8f3c0a14), Proc-Id=07560006(pprc=8f3c0eb4) 'CPUMon.exe', VM-active=0756000
6(pprc=8f3c0eb4) 'CPUMon.exe'
PC=4006bdfc(coredll.dll+0x0005bdfc) RA=93d264b4(kernel.dll+0x000064b4) SP=0009fe20, BVA=00000000
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你用Remote Tools/Remote Process Viewer 看一下,进程在么?
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 
实在不行,就掉哟个ExitProcess推出程序
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

5
 
MFC?还是API的?退出时怎么处理的?贴代码。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
to ultrapro :对话框程序,退出时按OK,对话框消失,进程还看的到。  ExitProcess加在哪里呢,析构函数里吗?

to  shuiyan: 退出时删掉建的进程及对象, 放在函数OnDestroy()中
void CCurve::OnDestroy()
{
        CDialog::OnDestroy();

        delete m_dwCPUPer;
        delete m_dwMemPer;
        delete m_phyavila;
        delete m_phytotal;

        delete m_viravaila;
        delete m_virtotal;
        delete m_pageavaila;
        delete m_pagetotal;
       
        if(m_dwTimerID)
        {
                timeKillEvent(m_dwTimerID);
        }

        DeleteObject(CPURect);
        DeleteObject(PhyGroupRect);
        DeleteObject(ClientRect);
        DeleteObject(rect_graph);
        DeleteObject(rect_mem);
        DeleteObject(cdc_mem);
       
        DeleteObject(brushBlack);
        DeleteObject(penGreen);
        DeleteObject(penCPU);
        DeleteObject(penMem);
        RETAILMSG(1, (_T("ondestroy------------------------\r\n")));
}
我又在析构函数中也加了一句输出
但是奇怪的是,按OK之后,有时候会调用到OnDestroy和析构函数,有时候又不会调用,且有输出时都是两个一起的。调用到的时候,退出时进程也关闭了。


 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
顺便提一下申请内存的做法
         DWORD *m_dwCPUPer;
        DWORD *m_dwMemPer;
        DWORD *m_phyavila;
        DWORD *m_phytotal;
        DWORD *m_viravaila;
        DWORD *m_virtotal;
        DWORD *m_pageavaila;
        DWORD *m_pagetotal;

         m_dwCPUPer = new DWORD[g_cyclecount];
        m_dwMemPer = new DWORD[g_cyclecount];
        m_phyavila        = new DWORD[g_cyclecount];
        m_phytotal = new DWORD[g_cyclecount];
        m_viravaila = new DWORD[g_cyclecount];
        m_virtotal = new DWORD[g_cyclecount];
        m_pageavaila = new DWORD[g_cyclecount];
        m_pagetotal = new DWORD[g_cyclecount];
各位老大帮我看看,这样new, 直接delete,可以吗?
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

8
 
没问题吧
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
搞了半天还是以前碰到的问题:
设置控件显示文本,一般两种方法:关联一个变量,UpdateData 或是 直接SetDlgItemText 但一调用,就不行了,程序退出时不调用析构函数了,于是进程还在。

但是,独立建一个工程,也做这样的操作,却也没有这样的问题。
区别就在于:
工程一、窗口A、B, A 为主窗口,B属性为Child,B通过B.Create来创建
工程二、窗口A、B, A为主窗口, B属性为POPUP,通过DoModal来创建
难道这样真的会有影响?天哪, 咋会这样??
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

10
 
有点乱了,于是又建了一个工程,再来,又可以了。
这个工程和以前的唯一的不同是关于定时画图,以前是通过timeSetEvent(500, 0, (LPTIMECALLBACK)TimeProc, (DWORD)this,TIME_PERIODIC | TIME_CALLBACK_FUNCTION) 创建一回调函数来实现,现在直接用OnTimer()来实现。
但现实控件文本的问题真的很奇怪,以后慢慢研究吧
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表