Primero voy a introducir: Estoy intentando imitar la clase string a modo de ejercicio. Pues bien, en el constructor está pasado algo solo descriptible a través de la salida (está debajo del código).
Código
String::String(const char *init_value) { unsigned int num_characters = 0; while(init_value[num_characters] != (char)NULL) num_characters += 1; _num_characters = num_characters; _value = (char *)malloc(num_characters + 1); _value[num_characters] = (char)0; while(--num_characters >= 0) { printf("%d ", num_characters); // _value[num_characters] = init_value[num_characters]; } }
Pues bien, la salida es la siguiente:
3 2 1 0 -1 -2 -3 -4 //... y así hasta el infinito
(El comentario no está en la salida, solo es para aclarar)
Como ven, aunque num_characters valga menos de 0, el while se sigue repitiendo...
Espero que sea error del compilador, porque si no yo sería muy tonto