不closehandle的后果
发布网友
发布时间:2022-04-20 20:44
我来回答
共1个回答
热心网友
时间:2022-07-12 05:29
摘抄:我在看代码时发现,如下一段代码:
HANDLE threadhandle = CreateThread(NULL, 0, RecvThreadProc, NULL, NULL, NULL);
CloseHandle(threadhandle);
不明白为什么创建线程后,要马上把线程的句柄关闭,这样做的目的是什么? 这样做会杀掉线程吗? 1,线程和线程句柄(Handle)不是一个东西,线程是在cpu上运行的.....(说不清楚了),线程句柄是一个内核对象。我们可以通过句柄来操作线程,但是线程的生命周期和线程句柄的生命周期不一样的。线程的生命周期就是线程函数从开始执行到return,线程句柄的生命周期是从CreateThread返回到你CloseHandle()。
2,所有的内核对象(包括线程Handle)都是系统资源,用了要还的,也就是说用完后一定要closehandle关闭之,如果不这么做,你系统的句柄资源很快就用光了。 计数减一而已,前提是你再不需要用这个线程句柄,这样线程结束后,资源立刻被释放。 内核对象由内核所拥有,而不是由进程所拥有。
在C l o s e H a n d l e 返回之前,它会清除进程的句柄表中的项目,该句柄现在对你的进程已经无效,不应该试图使用它。无论内核对象是否已 经撤消,都会发生清除操作。当调用C l o s e H a n d l e 函数之后,将不再拥有对内核对象的访问权,不过,如果该对象的使用计数没有递减为 0 ,那么该对象尚未被撤消。这没有问题,它只是意味着一个或多个其他进程正在使用该对象。当其他进程停止使用该对象时(通过调用C l o s e H a n d l e ),该对象将被撤消。
不closehandle的后果
CloseHandle执行的处理是 释放为这个句柄所分配的所有资源,如果没有关闭,结果可想。Windows有系统保护功能,当进程关闭后,Windows会释放为这个进程分配的所有资源,你使用的那些handle也会被自动释放掉。我们在编程时最好遵循微软给出的范例及要求,否则程序运行时经常会出现奇怪的表现。
CloseHandle函数说明
如果在创建的线程执行完毕后,忘记调用CloseHandle,一个常见的后果是内核对象的泄露,也被称为句柄泄露。这与内存泄露不同,内存泄露会导致可用内存资源的持续减少,而句柄泄露则可能导致系统资源的浪费。长期来看,这种泄露会降低系统的效率和性能,因为内核对象的无谓占用会占用宝贵的系统资源。然而,不必过于...
电脑报C:\WINNT\system32\services.exe:KERNEL32.LoadLibraryA缓冲区...
CloseHandle( hProcess ); // 失败处理 } if ( WriteProcessMemory( hProcess, lpBuf, (LPVOID)lpszDll, dwSize, &dwWritten ) ) { // 要写入字节数与实际写入字节数不相等,仍属失败 if ( dwWritten != dwSize ) { VirtualFreeEx( hProcess, lpBuf, dwSize, MEM_DECOMMIT ); CloseHandle( hProcess )...
怎么做植物大战僵尸可以造植物的修改器
‘ ACONLIST’”和标识“块的大小”这两部分,共计 12字节,绝对不能被更改、移动及删除,否则后果自负。 可能为了让文字说明信息系统化,在ACONLIST块内部包容了若干子块,本例中用到的两个分别是:INFOINAM块(提供本文件的解释说明)和IART块(用于插入版本信息)。说实在,诸位可以运用在 AVI文件中插入自定义块的方...
怎么制作游戏修改器,要简单化
‘ ACONLIST’”和标识“块的大小”这两部分,共计 12字节,绝对不能被更改、移动及删除,否则后果自负。可能为了让文字说明信息系统化,在ACONLIST块内部包容了若干子块,本例中用到的两个分别是:INFOINAM块(提供本文件的解释说明)和IART块(用于插入版本信息)。说实在,诸位可以运用在 AVI文件中插入自定义块的方法...
为什么要使用GlobalLock
使用GlobalLock的目的是为了保证内存管理时真的是用【内存】而不是【虚拟内存的磁盘镜像】,否则效率会降低。图形操作程序很讲求内存的时效性,这一点很重要。参考资料:http://baike.baidu.com/view/1799332.htm?fr=ala0_1_1
什么是FLASH游戏(写论文用的)
Call wMem(&H4700**, Val(Text1(0)), 1) '这里就要注意和上面的对应就可以,不对应的后果是很严重的哦!Call wMem(&H4700**, Val(Text1(1)), 1)Call wMem(&H4700**, Val(Text1(2)), 1)Call wMem(&H4700**, Val(Text1(3)), 1)Call wMem(&H4700**, Val(Text1(4)), 1)Call wMem(...
千年虫是不是病毒
“磁碟机”也可以通过U盘和网页挂马传播,但目前尚没有发现病毒作者通过攻破大型网站的方式挂马传播的案例,这也是目前“磁碟机”在传播范围上尚不及“熊猫烧香”的原因,但如果一旦病毒作者通过这种方式大面积传播,后果将不堪设想。 二、反攻杀毒软件能力 “熊猫烧香”和“磁碟机”病毒都有反攻杀毒软件的能力,但不同的...
VC6.0共享内存FileMapping运行时间问题
你的程序只申请资源而不释放资源,所以造成内存溢出。这种行为是很危险的,不停的创建内核对象,你的程序不停得申请资源,后果很难预料。我用你的程序当进程所占内存到100多m的时候就终止了。改成下面的代码,所占内存不会有大的变化。int main(){ int kkk=932156431;lable:HANDLE m_hMapFile=Create...
360后门事件的具体情况是什么?
瑞星蔑视法律,根本无视法律后果。要打击竞争对手,瑞星的策略是先把竞争对手的名誉给搞臭,造成对手的商业损失。至于败诉,那是几年以后的事情,大不了赔点钱了事。看一看瑞星的诉讼史,它诽谤卡巴,赔了45万元;诽谤王学武,只赔了5000元;陷害微点,只赔了一个员工当替罪羊进了大牢。瑞星诬蔑360,...