我的程序启动后,会有4000多个句柄
我现在就知道CreateEvent的句柄要CloseHandle。
CWinThread->m_Thread要CloseHandle
可是还有两三千个句柄没关呀
还有什么东东是句柄,需要关的呀?不然占用很大系统资源啊
我现在就知道CreateEvent的句柄要CloseHandle。
CWinThread->m_Thread要CloseHandle
可是还有两三千个句柄没关呀
还有什么东东是句柄,需要关的呀?不然占用很大系统资源啊
Access token
Communications device
Console input
Console screen buffer
Event
File
File mapping
Job
Mailslot
Memory resource notification
Mutex
Named pipe
Pipe
Process
Semaphore
Socket
Thread
Waitable timer
试过一次资源泄漏,GDI资源。涨到2000多的时候程序就OVER了。还试过4000多。
释放内核资源用 BOOL CloseHandle( HANDLE );
操作系统有那么多资源,知道了橘饼,就知道是哪个资源了。
我的程序里主要就用了event和socket
event我closehandle了
socket我closesocket了
可是句柄数还是不下去啊,该怎么办呢?
http://onegazhang.spaces.live.com/blog/cns!D5E642BC862BA286!577.entry
Debugging handle leak on Windows XP
CWinThread需要delete吗?
CWinThread* ptmp_thread_obj = AfxBeginThread(...);
if (ptmp_thread_obj)
CloseHandle(ptmp_thread_obj->m_hThread);
如果socket也是句柄的话,那句柄的数量岂不是没有上限了么?
一个程序Windows的GDI句柄是有限的。
1,系统/进程的句柄数量是没有上限的。(少数种类的句柄有自己的限制)
2,SOCKET是句柄