mfc如何彻底退出进程
我正在做一个项目,其中要实现如下一个问题:在App的InitInstance里面,若检测到一个异常则退出程序,我用ExitProcess(0);可以实现,可是调试的时候发...
我正在做一个项目,其中要实现如下一个问题:在App的InitInstance里面,若检测到一个异常则退出程序,我用ExitProcess(0);可以实现,可是调试的时候发现有很多内存泄漏,因为我的App的属性里面定义很多类,其中有很多分配堆内存的,它们没有得到释放,我应该如何实现退出程序并完美的没有内存泄漏,求指教
展开
4个回答
推荐于2018-05-17 · 知道合伙人软件行家
关注
展开全部
BOOL KillProcessFromName(CString strProcessName)
{
//创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//PROCESSENTRY32进程快照的结构体
PROCESSENTRY32 pe;
//实例化后使用Process32First获取第一个快照的进程前必做的初始化操作
pe.dwSize = sizeof(PROCESSENTRY32);
//下面的IF效果同:
//if(hProcessSnap == INVALID_HANDLE_VALUE) 无效的句柄
if(!Process32First(hSnapShot,&pe))
{
return FALSE;
}
//将字符串转换为小写
strProcessName.MakeLower();
//如果句柄有效 则一直获取下一个句柄循环下去
while (Process32Next(hSnapShot,&pe))
{
//pe.szExeFile获取当前进程的可执行文件名称
CString scTmp = pe.szExeFile;
//将可执行文件名称所有英文字母修改为小写
scTmp.MakeLower();
//比较当前进程的可执行文件名称和传递进来的文件名称是否相同
//相同的话Compare返回0
if(!scTmp.Compare(strProcessName))
{
//从快照进程中获取该进程的PID(即任务管理器中的PID)
DWORD dwProcessID = pe.th32ProcessID;
HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID);
::TerminateProcess(hProcess,0);
CloseHandle(hProcess);
return TRUE;
}
scTmp.ReleaseBuffer();
}
strProcessName.ReleaseBuffer();
return FALSE;
}
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
展开全部
你new的那些类应该把析构函数做好,让它释放内存资源,同时,在异常处理函数里面delete你新建的类 就ok了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在APP的InitInstance里面检测到错误就直接返回吧,然后所有的资源在ExitInstance里面去释放
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这应该不可能,因为你的进程退出了,分配给你进程的内存一定会释放掉。包括你出错被迫强行退出也是一样。
你的内存泄露恐怕和你的代码本身质量问题有关系,和exitProcess没关系。
---------------------------------------------------------------------------------------------------
哈哈哈,管理员不懂在瞎选?可怜的楼主看看这篇文章 http://blog.csdn.net/yangywyangyw/article/details/6132341 只要你的程序退出了,不管你那令人作呕的垃圾代码有多少内存泄露也不管你是如何退出的,操作系统都会回收干净的,如果操作系统不能保证这一点,那操作系统一天要死多少次机才算合格???这都不懂还写什么VC程序!还笑话管理员瞎选呢,哈哈哈,搞笑。
你的内存泄露恐怕和你的代码本身质量问题有关系,和exitProcess没关系。
---------------------------------------------------------------------------------------------------
哈哈哈,管理员不懂在瞎选?可怜的楼主看看这篇文章 http://blog.csdn.net/yangywyangyw/article/details/6132341 只要你的程序退出了,不管你那令人作呕的垃圾代码有多少内存泄露也不管你是如何退出的,操作系统都会回收干净的,如果操作系统不能保证这一点,那操作系统一天要死多少次机才算合格???这都不懂还写什么VC程序!还笑话管理员瞎选呢,哈哈哈,搞笑。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询