用户进程是运行在用户空间里的,假如进程创建了Mutex, Event等句柄(属于内核资源)。进程关闭后,这些内核资源会释放吗?谢谢!

解决方案 »

  1.   

    CloseHandle()来关闭内核对象,操作系统会将引用计数-1,当计数为0后,操作系统删除次内核对象。
    进程销毁的时候,操作系统会检查句柄表,帮助进程关闭所有忘记关闭的内核对象,与此相似,进程结束后,不会泄露任何句柄,内存,GDI对象。
      

  2.   

    如忘记调用CloseHandle,在进程运行期间,进程可能发生资源泄漏;但是,当进程终止运行,OS会确保此进程所使用的所有资源都被释放,包括所有内核对象、资源以及内存等;建议看一下有讲内核对象的书,来了解一下OS是怎么管理内核对象的。
      

  3.   

    进程关闭后系统帮助释放,但是在运行期间
    忘记关系系统对象Mutex, Event 会造成内存泄漏
    比如
    Mutex = Create..
    不关闭重复建立
    Mutex = Create..