Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当应用程序崩溃时,打开句柄会发生什么情况?(Windows XP及以上版本)_Windows_Vb6_Handle - Fatal编程技术网

当应用程序崩溃时,打开句柄会发生什么情况?(Windows XP及以上版本)

当应用程序崩溃时,打开句柄会发生什么情况?(Windows XP及以上版本),windows,vb6,handle,Windows,Vb6,Handle,我的印象是,如果一个应用程序有一个打开的句柄,它崩溃了,这个句柄没有被释放,如果你试图访问这个句柄,比如说一个文件,那么你会得到一个错误 但是,我在Windows XP以后的版本中尝试过此操作,如果在任务管理器关闭句柄之前从任务管理器关闭exe,则句柄似乎会被释放。代码如下: Private Sub Form_Load() Dim iFile As Integer iFile = FreeFile Open "myfilelock" For Outpu

我的印象是,如果一个应用程序有一个打开的句柄,它崩溃了,这个句柄没有被释放,如果你试图访问这个句柄,比如说一个文件,那么你会得到一个错误

但是,我在Windows XP以后的版本中尝试过此操作,如果在任务管理器关闭句柄之前从任务管理器关闭exe,则句柄似乎会被释放。代码如下:

Private Sub Form_Load()
    Dim iFile As Integer
    iFile = FreeFile          
    Open "myfilelock" For Output Lock Read Write As #iFile
    MsgBox "About to close" 'close it here with task manager

    Close #iFile

End Sub

那么,Windows XP以后的版本是否会释放所有打开的句柄,以防具有这些句柄的exe崩溃?

当应用程序崩溃时,所有版本的Windows都会关闭内核句柄。甚至Windows95也做到了这一点。当然,任何基于Windows NT内核或更高版本的东西都会在应用程序崩溃时关闭内核句柄


这包括文件、事件、信号量、共享内存、管道和套接字的句柄

当程序退出或崩溃时,所有现代操作系统都会清理所有程序资源—内存、句柄、套接字、线程等。否则,应用程序开发人员在退出时忘记关闭的每个句柄都会导致大量资源泄漏,必须定期重新启动你的电脑

+1。虽然,在Windows95之前有很多版本的Windows,你知道:这在16位Windows中是不正确的,但我想这已经是古老的历史了。。。也许我发现我必须定期重新启动Windows: