从这个答案开始:当C++终止处理程序是正确的时候?
如果有一个'自动清理'和'不会自动清理'的资源列表,并且可以指定操作系统/资源以及最好附带文档链接(如果适用),那就太好了。在您的答案中,如果您可以指定操作系统/资源并提供文档链接(如果适用),那就更好了。
显而易见的:
内存:是的,会自动清理。 问题。是否有任何例外情况?
从这个答案开始:当C++终止处理程序是正确的时候?
如果有一个'自动清理'和'不会自动清理'的资源列表,并且可以指定操作系统/资源以及最好附带文档链接(如果适用),那就太好了。在您的答案中,如果您可以指定操作系统/资源并提供文档链接(如果适用),那就更好了。
显而易见的:
内存:是的,会自动清理。 问题。是否有任何例外情况?
当应用程序崩溃或退出时,Windows无法清理一些模糊的资源,并且这些资源没有被明确释放,主要是因为操作系统不知道是否需要保留这些资源。
WNDCLASS
(“当 DLL 卸载时,由 DLL 注册的窗口类不会被注销。DLL 必须在卸载时显式注销其类。”MSDN)如果您的全局窗口类也有类 DC,则该 DC 也将泄漏。ATOM
(一种相对有限的资源)。RegisterWindowMessage
创建的窗口消息 ID。这些是设计成会泄露的,因为没有 UnregisterWindowMessage
。Communications device
Console input
Console screen buffer
Event
File
File mapping
Job
Mailslot
Mutex
Named pipe
Process
Semaphore
Socket
Thread
Token
临时文件是一个很好的例子,它不会被清理 - 句柄已释放但文件没有被删除。