Я смотрел в приложение, где оно регистрирует некоторые события, записывая конкретную информацию в файл журнала. Приложение (которое создается с использованием многопоточных библиотек времени выполнения, но не использует многопоточность) использовало вызов _fwrite_nolock () для записи в журнал, который недавно был заменен функцией fwrite (). В результате этого изменения была обнаружена ошибка, заключавшаяся в том, что в какой-то более ранней точке выполнения был вызван вызов функции fclose (), в которой использовался тот же указатель FILE *, который использовался функцией fwrite () позже (а не переустанавливалуказатель на NULL), что приводит к ошибке времени выполнения. Это ожидается, поскольку файл уже был закрыт, но этого не произошло с вызовом _fwrite_nolock (), который возвращает только ноль в качестве кода возврата и продолжает выполнение. Я не мог найти объяснение такого поведения. Надеюсь, кто-то может это сделать. Спасибо.