Это мусор в памяти.
Почему так происходит - char* воспринимается как строка, по стандарту с
Далее - длина, занимаемая в памяти переменной, всегда кратна определенному значению. Как и сам размер, занимаемый в памяти. Это, обычно, 4 байта для х86 и 8 для х64. Технология называется выравниванием.
Вы в строку записали один символ, а символ конца строки не записали. Прочиталась память до конца промежутка выравнивания и вывелась для вас. Там оказался всякий мусор, как всегда. Это все равно, что вывести неинициализированную переменную.
З.Ы. А само выравнивание необходимо для быстрого доступа к памяти. Грубо говоря, память разбивается на ячейки и мы всегда знаем, что для большинства переменный адрес делится на 4 или на 8, например.