CRITICAL_SECTION в auto_ptr и без вызова DeleteCriticalSection

Передо мной есть код, который я не совсем уверен, что думаю, что все в порядке.
Критический раздел помещен в auto_ptr а также DeleteCriticalSection никогда не вызывается на это. Но я, кажется, помню, что случаи CRITICAL_SECTION должны быть изменены только с функциями критического раздела. Я попытался запустить это через проверку утечки памяти, и он пожаловался.

Это, конечно, часть многопоточной системы, и доступ к критическому разделу осуществляется в нескольких местах. Но если я урежу это, это в основном, как CRTITCAL_SECTIONлечится сейчас.

void test() {
auto_ptr<CRITICAL_SECTION> foo;
foo.reset(new CRITICAL_SECTION());
InitializeCriticalSection(foo.get());
}

Так как я не верю auto_ptr выход за рамки правильно удаляет критический раздел, который я пытался быстро изменить это

void test() {
auto_ptr<CRITICAL_SECTION> foo;
foo.reset(new CRITICAL_SECTION());
InitializeCriticalSection(foo.get());
DeleteCriticalSection(foo.get());
}

и обнаружение утечки памяти стало намного счастливее.
Критические секции существуют до тех пор, пока приложение не закроется. Так что я должен потратить время, чтобы обновить код для использования DeleteCriticalSection действительно удалить критическую секцию или просто жить с тем фактом, что приложение закрывается и освобождает всю память в любом случае?

Обновить

Ответ на WhozCraigДа, если посмотреть на это, несколько экземпляров объектов, содержащих критическую секцию, могут быть живы в любой момент времени и не могут совместно использовать одну глобальную критическую секцию.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]