1 入口函数返回
最正确的方式,只有这样才能保证住主线程的所有资源都已经被正确的清理入口函数在返回时,为确保以下几件事情已经完成
1 主线程所创建的任何对象都已经被正确的销毁
2 操作系统会正确的释放线程的堆栈
3 将进程的退出代码设置成入口函数的返回值
4 递减内核对象的使用计数
2 进程中的一个线程调用ExitProcess
不应调用此函数来结束进程,当函数被调用的时候会强制结束进程,并将退出代码设置为uExtiCode,单此时线程并未正确结束,会导致线程无法正确被清理风险很高 全局对象 没有办法被正确的被释放 所以内核对象不会被正确的释放 最后导致内核不足 系统崩溃
3 另一个进程中的线程调用TermitateProcess
不应该用次函数来结束进程,此函数能够结束其他进程4 进程中的所有线程都自然死亡
很少碰到这种情况,理论存在使用计数
创建的时候 为+1
会使用procInfo 会变成+1 (2)
退出-1
在使用CloseHande -1
为0的时候内核对象被回收
内核对象泄露是比内存泄露更麻烦的事情
内存泄露可以关闭程序来解决
内核对象泄露只能重启