Strings sem um caractere '\ 0'?

Se por engano, defino uma matriz de caracteres sem '\ 0' como seu último caractere, o que acontece então? Estou perguntando isso porque notei que, se eu tentar percorrer a matriz while (cnt! = '\ 0'), em que cnt é uma variável int usada como um índice para a matriz e imprima simultaneamente os valores de cnt para monitorar o que está acontecendo a iteração para no último caractere + 2.Os caracteres extras são aleatórios, é claro, mas não consigo entender por que ele precisa parar depois 2.O compilador insere automaticamente um caractere '\ 0'? Links para a documentação relevante seria apreciado

Para deixar claro, dou um exemplo. Digamos que a matriz "str" contenha a palavra doh (sem '\ 0'). Imprimir a variável cnt em cada loop me daria esse doh + ou doh ^ e assim por diante.