¿Lanzo el resultado de malloc?

In esta pregunta, sugirió alguien en un comentario Eso deberia no emitir el resultado de malloc, Es decir,

int *sieve = malloc(sizeof(int) * length);

en lugar de:

int *sieve = (int *) malloc(sizeof(int) * length);

Por qué sería este el caso?

preguntado el 03 de marzo de 09 a las 08:03

Además, es más fácil de mantener escribir tamiz = malloc (tamaño de * tamiz * largo); -

Este es un comentario para mí, solo la respuesta seleccionada es correcta. -

Debido a que malloc devuelve un (void *), no es necesario lanzarlo -

Los moldes son malvados. Veo tantos emitidos en código simplemente como resultado de una mala práctica de codificación. Siempre que necesiten insertar uno, lo primero que deben preguntarse es "qué está mal aquí". ¿Está todo declarado como debe ser? Si no es necesario, se necesitaría un molde, por lo que se declara que algo está mal. Si realmente necesita hacer algunas cosas de bajo nivel en bytes individuales en un int o así, considere una unión para acceder a ellos. Eso los declarará bien. Como regla general, no los inserte a menos que el compilador se queje. Entonces evítalos. Este ejemplo no se quejará. El puntero vacío promoverá a cualquier tipo. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.