При отладке сбоя в многопоточном приложении я, наконец, нашел проблему в этом выражении:
CSingleLock(&m_criticalSection, TRUE);
Обратите внимание, что он создает неназванный объект класса CSingleLock и, следовательно, объект критического раздела разблокируется сразу после этого оператора. Это, очевидно, не то, чего хотел кодер. Эта ошибка была вызвана простой ошибкой ввода. Мой вопрос в том, есть ли какой-то способ предотвратить временный объект класса, создаваемого во время самого компиляции, то есть вышеприведенный тип кода должен генерировать ошибку компилятора. В общем, я думаю, всякий раз, когда класс пытается сделать какое-то приобретение ресурсов, временный объект этого класса не должен быть разрешен. Есть ли способ обеспечить его соблюдение?