Это ошибка в Windows.
Как упоминается в опечатках Ганс Пассант :
Я также повторяю,VS2008 на Win7.Классный баг.Изменение шрифта консоли исправляет это.
Давайте используем эту изоляцию от ошибок.Я распознаю этот шрифт как Petite Terminal , что подразумевает, что вы, скорее всего, настроили этот проект как консольное приложение Win32.Дополнительная репродукция с GCC подтверждает эту гипотезу, и мы предположим, с практической точки зрения, что все вы получаете 32-разрядное консольное приложение, работающее внутри терминала Windows.
Вопрос становится почему записывает ровно один дополнительный столбец пикселей в контексте шрифта терминала по умолчанию, цвета 8, и обратно записывает в консольный буфер .
В частности, давайте разберем этопроблема на составляющие части:
- Когда выдается запись, символ записывается в местоположение в массиве терминалов
- Когда выбран цвет по умолчанию (7), пикселине перетекать в другие буферы в массиве
- Когда выбран цвет 8, дополнительный столбец пикселей записывается в следующую область буфера, которая видна только при повторном чтении текста
Из-за наличия переполнения в (3), это ошибка.
Цитата Раймонд Чен:
В модели рендеринга консоли предполагается, что каждый символ помещается в ячейке фиксированного размера.Когда новый символ записывается в ячейку, старая ячейка печатается с новым символом, но если старый символ имеет вылет или подвисание, эти дополнительные пиксели остаются позади, так как они «пролились» на требуемую ячейку и зараженные соседние ячейки.Точно так же, если соседний символ «перетек», эти «побочные пиксели» будут стерты.
Набор шрифтов, которые можно использовать в окне консоли, был обрезан до шрифтов, которые были протестированы и которые, как известно, работалиприемлемо в консольных окнах.Для английских систем это привело нас к консоли и терминалу Lucida.
...
"Ну, это глупо. Вы должны были помешать мне выбрать шрифт, который так явно приводит керунда. "
И это то, что мы сделали.
Не то, чтобы я обвинял Рэймонда в этом, но он авторитетно иллюстрирует это как" не может случиться ".
Выбор и тестирование консольных шрифтов для Windows должно было это уловить.Тот факт, что это вообще проблема, является отклонением.