RAII does't выполнить деструктор, когда называют exit.So WSACleanup не run.What проблема?
IME, нет. ОС может очистить себя от завершения процесса - это не глупо.
Я нашел, что libnet использует WSAStartup без WSACleanup, почему?
Дизайнеры библиотеки поняли выше - ОС будет очищаться, как и во время принудительного завершения процесса va. диспетчер задач.
WSAStartup может звонить много раз в одном процессе, поэтому как можно обеспечить WSACleanup достаточно?
Зачем вам это нужно? Просто назовите его один раз при запуске. Работа выполнена.
Как использовать WSAStartup и WSACleanup легко и элегантно?
Вызов WSAStartup один раз при запуске. Вызовите WSACleanup после выхода, если сможете, (или если вам это нравится, или если вам становится лучше :).
Дополнительно я написал этот тестовый код для тестового WSAStartup без WSAClean, не обнаружили каких-либо ненормальное (рост памяти или аварии ...)
ОС очищает, так же, как это происходит с потоками, файлами, памятью и т. д.
Если ОС рабочего стола общего назначения не заботится о выделенных ресурсах при завершении процесса, это было бы разумно нецелесообразно.
'exit' будет запускать деструктор в глобальном или статическом varialbe.Sometimes мне нужно использовать любую библиотеку, например' libnet'. Я нашел в 'libnet', которые вызывают' WSAStartup' без 'WSACleanup'. Также в моем классе когда-нибудь понадобится 'exit', поэтому RAII не работает. – qianchenglong
Вот что я говорю. Он не будет уничтожать объекты, выделенные с помощью указателей. – doptimusprime
@qianchenglong 'Также в моем классе когда-то нужно выйти' Затем перепроектируйте свою программу. – deviantfan