¿Printf () asigna memoria en C?

Este método simple solo crea una matriz de tamaño dinámico n y lo inicializa con valores 0 ... n-1. Contiene un error, malloc () asigna solo n en lugar de sizeof (int) * n bytes:

int *make_array(size_t n) {
    int *result = malloc(n);

    for (int i = 0; i < n; ++i) {
        //printf("%d", i);
        result[i] = i;
    }

    return result;
}

int main() {
    int *result = make_array(8);

    for (int i = 0; i < 8; ++i) {
        printf("%d ", result[i]);
    }

    free(result);
}

Cuando verifique la salida, verá que imprimirá algunos números como se esperaba, pero los últimos son galimatías. Sin embargo, una vez que inserté el printf () dentro del bucle, la salida fue extrañamente correcta, ¡aunque la asignación seguía siendo incorrecta! ¿Hay algún tipo de asignación de memoria asociada con printf ()?

Respuestas a la pregunta(3)

Su respuesta a la pregunta