В этом примере вызывается неопределенное поведение.
operator<<(std::wostream&,const wchar_t*)
ожидает, что буфер завершится нулем, и прекратит печать символов, когда он достигнет первого L'\0'
символа.Если в буфере окажется нулевой символ (L'\0'
), то код будет работать «правильно» (хотя вывод непредсказуем).Если этого не произойдет, то operator<<
продолжит чтение памяти до тех пор, пока не встретит ее.
Наличие нулевого терминатора не поддерживается вашим примером.Для сравнения, следующее вывело бы неопределенное количество символов, скорее всего, нежелательных, но хорошо определенных:
WCHAR wArray[1024];
wArray[1023] = L'\0';
wcout << wArray << endl;