char *array = ::new char [10];
Итак, 10 элементов массива типа char алоцируются на кучу и указатель помещается на стек.
Из-за отсутствия символа конца строки выделяется больше памяти чем нужно и как следствие мусор из соседних ячеек памяти дает о себе знать!
Чтобы исправить данное недоразумение, следует всегда использовать символ конца строки:
array[9] = '\0';
Итого:
static const std::size_t size = 10;
char *array = ::new char [size];
array[size - 1] = '\0';
delete[] array;