首页
社区
课程
招聘
[求助]CloseHandle一句是否有必要?
发表于: 2012-10-19 09:02 5983

[求助]CloseHandle一句是否有必要?

2012-10-19 09:02
5983
如题,以下是个Win32 SDK控制台输出Hello World的例子
关于最后一句的CloseHandle,
本人只知道在读写文件后,应当使用CloseHandle关闭文件
删去最后一句CloseHandle后程序也可以结束
请问在下面的例子中CloseHandle是否真的起作用?应不应该有这句?

#include <windows.h>
//Console
//kernel32
void EntryPoint()
{
	HANDLE hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
	DWORD dwTextLength;
	
	WriteConsole(hConsoleOutput,"Hello World!",12,&dwTextLength,NULL);
	CloseHandle(hConsoleOutput);
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不一定是读写文件后就一定要CloseHandle,一般需要看这个句柄是否是你创建的,但是也存在A创建B关闭的情形。

这里的情况还比较特殊GetStdHandle可能和GetCurrentProcess等函数一样,返回伪句柄。

无论如何,这里的CloseHandle不该有
2012-10-19 09:15
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
1,进程结束后 系统会帮你关掉本进程关联的句柄
2,不再使用的句柄,最好手动关掉,进程有最大句柄数据限制,免的出各种诡异BUG
2012-10-19 09:19
0
雪    币: 651
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
读文件一般是关闭文件流。

像closehandle这类的,这能体现重要性的就是和数据库交互。如果你不断开,那么你就一直跟数据库有交集,这也会造成数据库负载问题。
2012-10-19 11:25
0
雪    币: 64
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
看样子是不需要CloseHandle了
2012-10-19 11:48
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
问题还没有深入到本质,期待更精彩的答案。
2012-10-19 14:39
0
雪    币: 822
活跃值: (279)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
大型的软件不撤销句柄是不好的 可能会出现内存泄漏的情况 造成一大堆bug
不过你这程序还算小型 可有可无 反正等调用函数返回 你在追踪一下句柄 就知道咋回事了
2012-10-19 15:10
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
8
msdn 没有说要关闭,例子也没有关闭:
http://msdn.microsoft.com/en-us/library/ms685035%28v=vs.85%29.aspx
2012-10-19 15:10
0
游客
登录 | 注册 方可回帖
返回
//