在Delphi 7中,如何释放Windows句柄指针?

3

我正在使用一个第三方工具,它使用Windows句柄指向内存中的图像。

该工具说明你需要负责释放句柄。那么在Delphi 7中如何释放该句柄呢?句柄的数据类型为LONG。

2个回答

17
如果工具告诉你需要清理,那么它也应该告诉你应该使用什么。仔细查看文档。
你需要更加具体地说明你拥有哪种句柄。没有一个函数可以释放所有类型的句柄。
大多数内核对象(互斥对象、线程、进程、文件、管道、事件等)使用CloseHandle
如果你真的拥有一个图像句柄,比如HBitmapHIcon,那么你可以使用DeleteObject来释放。
窗口句柄(HWND)则需要使用DestroyWindow来释放。
你可能拥有一个内存句柄,由GlobalAlloc返回;对于这种情况,你需要使用GlobalFree
它可能根本不是Windows句柄。它可能是你工具API特定的句柄,需要使用API特定的函数来销毁它。
最重要的是你需要知道你拥有什么。

这个库的文档写得很差,没有说明如何释放内存。这就是我提出问题的原因。我下载了一个更新的软件版本,并发现它包括一个演示应用程序。在演示应用程序中,使用了GlobalFree方法进行内存释放。谢谢您的回应! - xkingpin

4
通常情况下,您会使用CloseHandle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接