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

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

2012-10-19 09:02
6110
如题,以下是个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
活跃值: (594)
能力值: ( 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
活跃值: (284)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
大型的软件不撤销句柄是不好的 可能会出现内存泄漏的情况 造成一大堆bug
不过你这程序还算小型 可有可无 反正等调用函数返回 你在追踪一下句柄 就知道咋回事了
2012-10-19 15:10
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
8
msdn 没有说要关闭,例子也没有关闭:
8e5K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3&6Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3L8r3W2T1M7X3q4J5P5g2)9J5c8X3#2K6y4U0R3#2x3o6x3#2i4K6t1#2x3U0S2$3i4K6y4p5N6Y4y4Q4x3X3f1^5y4g2)9J5y4e0t1&6i4K6u0W2j5i4y4H3P5l9`.`.
2012-10-19 15:10
0
游客
登录 | 注册 方可回帖
返回