¿Por qué el compilador se queja cuando no lanzo el resultado de malloc?

Estoy inspeccionando el código que no requiere el resultado de conversión explícita de malloc call, pero cada vez que intento hacer esto, el compilador produce un error.

es decir

<code>char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok
</code>

Respuestas a la pregunta(2)

Su respuesta a la pregunta