Спорный а? Я считаю, что потоки C ++ используют < < и >> Я ненавижу это. Они операторы сдвига. Перегрузить их таким способом - плохая практика. Это заставляет меня хотеть убить любого, кто придумал это и подумал, что это хорошая идея. GRRR.
Есть некоторые непонятные ресурсы, которые Windows не очищает, когда приложение выходит из строя или закрывается без явного их освобождения, в основном потому, что ОС не знает, важно ли их оставить или нет.
WNDCLASS
es («Ни один из оконных классов, зарегистрированных DLL, не отменяется при выгрузке DLL. DLL должна явно отменить регистрацию своих классов при выгрузке». MSDN ) Если ваш глобальный класс окна также имеет класс DC, то этот DC также будет протекать. ATOM
s (относительно ограниченный ресурс). RegisterWindowMessage
. Они предназначены для утечки, поскольку нет UnregisterWindowMessage
. Временные файлы - хороший пример того, что не будет очищено - дескриптор освобождается, но файл не удаляется
Любое исключение является ошибкой - приложения могут и действительно дают сбой, и действительно содержат утечки. ОС должна быть надежной и не истощать ресурсы даже при плохо написанных приложениях. Это также относится к ресурсам, не относящимся к ОС. Службы, которые распределяют ресурсы по процессам, должны освобождать эти ресурсы при завершении процесса. Если они этого не сделают без REG_OPTION_VOLATILE
В Windows практически все, к чему вы можете обратиться, должно фактически управляться ОС - поэтому вы получаете только дескриптор. Это включает, но не ограничивается том следующие (список скопирован из документации MSDN для CloseHandle () API):
Communications device
Console input
Console screen buffer
Event
File
File mapping
Job
Mailslot
Mutex
Named pipe
Process
Semaphore
Socket
Thread
Token
Все это должно быть восстановлено ОС при закрытии приложения, хотя, возможно, не сразу, в зависимости от их использования другими процессами.
Прочие операции системы работают одинаково. Трудно представить себе ОС, достойную своего названия (я исключаю встроенные системы и т. Д.), Где это не так - управление ресурсами является смыслом существования операционной системы №1.