windows内幕----恍然大悟

本文解析了操作系统中进程与线程的关系,特别是当主线程结束时进程如何处理其他仍在运行的线程。讨论了不同退出函数如ExitProcess与ExitThread的影响,并强调了正确管理资源的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 值得注意的是:
  操作系统的SDK文档中说明,只要进程中有线程在运行,进程就不会退出。
而我们的程序经常是主线程结束了,(程序)进程也就结束了,而不管程序中是否还有别的线程在运行。
这不矛盾吗?
其实并不矛盾。

因为当主线程结束的时候,在程序员main函数外,C/C++运行期函数内(CStartCRTMain())释放必要的资源后,
主线程调用了操作系统的ExitProcess(nReturnCode),从而整个进程都结束,其它线程不管是否在运行,也就
结束了。

以上步骤也同时提醒我们,如果我们在main函数内调用了ExitProcess(),就会饶过C/C++运行期释放资源,当然这并
不会造成什么大的危害,因为进程结束了,它所占据的资源也就全部由系统释放了(当然也不赞成,也许你还有数据没来得及存储呢)。如果是在main函数内调用了
ExitThread()可就不妙了,因为在main函数内结束主线程,就会饶过C/C++运行期释放资源并结束进程,
从而导致进程不会结束,进而造成内存泄露。

------会出现析构得不到执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值