Возможно, из-за неинициализированной переменной (в режиме отладки большинство переменных инициализируются нулем, но не инициализируются в выпуске)
Большинство таких ошибок можно исправить, исправив все предупреждения, сгенерированные компилятором (предупреждения - это действительно логические ошибки, а не синтаксические ошибки). Так что установите уровень предупреждения выше, перекомпилируйте и убедитесь, что вы получаете ноль отклонений.
В dev studio установите уровень предупреждения на четыре, а также установите флаг для обработки предупреждений как ошибок.
Ps. Вместо динамического выделения буфера с помощью
wchar_t* buffer = new char_t [<size>];
Использовать стандартный вектор (это исключение безопасно)
std::vector<wchar_t> buffer(<size>);
Вы можете получить указатель на буфер с помощью:
&buffer[0]
Также: у Джен (который удалил свой ответ) есть хорошее замечание) Я удалю это и проголосую Джен, если он удалит свой ответ.
Но вы можете проверить, что строка имеет правильное значение NULL, оканчивающееся L '\ 0'.