CloseHandle()和ExitThread()区别(防止内存泄露)
2013-04-11 11:18
323 查看
//原文转自博客园:http://www.blogjava.net/JAVA-HE/archive/2009/06/16/282631.html
CloseHandle的功能是关闭一个打开的对象句柄,该对象句柄可以是线程句柄,也可以是进程、信号量等其他内核对象的句柄,而ExitThread的功能是终止一个线程,它所接受的参数是一个线程的退出码。
通过调用CloseHandle可以告知系统,已经完成了对某一内核对象的操作,该函数首先检查调用进程的句柄表,来确认进程是否对该句柄所指向的对象有访问权,如果句柄无效则返回FALSE,如果有效,系统将得到该内核对象的数据结构的地址,把结构中的使用计数成员减1,如果计数变为0,则将从内核中释放该内核对象。
如果计数还未到0,就意味着还有其他的进程在使用这个内核对象,那么它就不会被释放。
ExitThread是推荐使用的结束一个线程的方法,当调用该函数时,当前线程的栈被释放,然后线程终止,相对于TerminateThread函数来说,这样做能够更好地完成附加在该线程上的DLL的清除工作。(ExitThread只能终止自己
,而Terminate函数可以终止任何线程。)
其实可以通过这个来避免c++里面的内存泄露.
http://blog.csdn.net/anye3000/article/details/7470674有更加详细的介绍。
个人思考:在本线程中直接return 0 ;岂不是很轻松吗?呵呵!如果其他线程要访问本线程的堆栈那么就用TerminateThread来终止.实在是不知道ExitThread和return 0 相比好在哪。 如果用了ExitThread(0)我想应该就不再需要CloseHandle了。这难道是唯一的方便之处??
CloseHandle的功能是关闭一个打开的对象句柄,该对象句柄可以是线程句柄,也可以是进程、信号量等其他内核对象的句柄,而ExitThread的功能是终止一个线程,它所接受的参数是一个线程的退出码。
通过调用CloseHandle可以告知系统,已经完成了对某一内核对象的操作,该函数首先检查调用进程的句柄表,来确认进程是否对该句柄所指向的对象有访问权,如果句柄无效则返回FALSE,如果有效,系统将得到该内核对象的数据结构的地址,把结构中的使用计数成员减1,如果计数变为0,则将从内核中释放该内核对象。
如果计数还未到0,就意味着还有其他的进程在使用这个内核对象,那么它就不会被释放。
ExitThread是推荐使用的结束一个线程的方法,当调用该函数时,当前线程的栈被释放,然后线程终止,相对于TerminateThread函数来说,这样做能够更好地完成附加在该线程上的DLL的清除工作。(ExitThread只能终止自己
,而Terminate函数可以终止任何线程。)
其实可以通过这个来避免c++里面的内存泄露.
http://blog.csdn.net/anye3000/article/details/7470674有更加详细的介绍。
个人思考:在本线程中直接return 0 ;岂不是很轻松吗?呵呵!如果其他线程要访问本线程的堆栈那么就用TerminateThread来终止.实在是不知道ExitThread和return 0 相比好在哪。 如果用了ExitThread(0)我想应该就不再需要CloseHandle了。这难道是唯一的方便之处??
相关文章推荐
- CloseHandle()和ExitThread()区别(防止内存泄露)
- CloseHandle()和ExitThread()的区别(防止内存泄漏)
- Linux下用Valgrind做检查(防止内存泄露)
- C++栈展开如何防止内存泄露
- c++重载new操作符,防止内存泄露
- Spring配置防止内存泄露
- android17——如何防止内存泄露
- Java内存泄露与溢出的区别
- Android&Java内存泄露和内存溢出的区别及解析
- 内存泄露与溢出区别
- Linux下用Valgrind做检查防止内存泄露
- MVP入门,接口回调new接口和implement实现,防止内存泄露解绑
- CloseHandle(),TerminateThread(),ExitThread()的区别
- Spring 刷新Introspector防止内存泄露
- 内存溢出 和内存泄露 的区别 ---- 学习JVM 遇到,了解一下
- android开发游记:性能测试中内存泄露排查方法与防止泄露编码心得
- C++栈展开如何防止内存泄露
- CloseHandle()和ExitThread()区别
- CloseHandle(),TerminateThread(),ExitThread()的区别
- C++more effective中的用智能指针防止内存的泄露(用对象来表示指针)