分享

创建线程后为什么马上调用CloseHandle()来关闭句柄

 Great2021 2021-11-14
hThread = CreateThread( NULL, 0, ThreadFunc, NULL, 0, &dwThreadId);

CloseHandle(hThread);

如上面这样的代码,原因为:创建线程后返回了线程句柄,新创建的线程内核对象的使用计数是2,一个是线程本身,一个是创建线程的线程,创建线程的线程closehandle后,新的线程的内核对象使用计数为1,当这个新线程结束运行后内核对象的使用计数还要减1,这时内核对象的使用计数是0,则系统会自动删除新线程的内核对象,这是正常的处理流程。

如果不调用CloseHandle();则新线程运行结束后,由于使用计数为1,所以不会删除线程内核对象,这样就会造成内存泄漏。当然在整个程序运行结束后,操作系统会回收这些内存,因此可以知道如果不调用CloseHandle()的话,在程序运行阶段会造成内存泄漏!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多