Может случиться так, что ваш wcsncat (), который согласно документации делает:
»
ОПИСАНИЕ
Функция wcsncat () добавляет не более первых n символов строки, на которую указывает ws2, к концу строки, на которую указывает ws1. Если символ NULL появляется в ws2 перед n символами, все символы вплоть до символа NULL добавляются к ws1. Первый символ ws2 перезаписывает завершающий нулевой символ ws1. Завершающий символ NULL всегда добавляется к результату, и если объекты, используемые для копирования, перекрываются, поведение не определено.
«
Таким образом, он продолжает добавляться в bufferln, начиная с перезаписи первого появления символа NULL. Таким образом, в случаях, когда if (wcscmp (buffer, L "\ n") == 0) возвращает FALSE, вы в конечном итоге переполняете свой выделенный буфер FILE_READ_BUFFER, выливаете файл за пределы границы bufferln и, возможно, разрушаете стек.
В большинстве случаев стеки растут вниз, и, должно быть, они достигли некоторых регионов, которые на самом деле ОШИБКА, потому что доступ к первым 2 страницам ваших страниц виртуального адреса не разрешен в большинстве систем. Это спорный вопрос о том, почему там произошел сбой. Но главная причина в том, что вы должны попытаться записать данные куда-нибудь, как только прочитаете их, поскольку ваши буферы чтения и записи имеют одинаковую длину.
НТН