Es necesario un malloc () antes de un realloc ()?


Dado que había leído realloc actuará como malloc si el tamaño apuntado es 0, lo estaba usando sin malloc(), siempre que el puntero fuera estático, global, o explícitamente establecido en NULL si es automático.

Sin embargo, noto que muchos programadores intentan configurarlo o configurarlo a malloc(1). Es necesario?

Author: j riv, 2010-12-16

2 answers

De Las especificaciones de los grupos abiertos :

Si ptr es un puntero nulo, realloc() será equivalente a malloc() para el tamaño especificado.

Si el rpp no coincide con un puntero devuelto anteriormente por calloc(), malloc(), o realloc() o si el espacio ha sido previamente desasignada por un llamada a free () o realloc (), el el comportamiento es indefinido.

 24
Author: Simone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-16 09:43:45

malloc no es necesario, solo se puede usar realloc.

malloc(n) es equivalente a realloc(NULL, n).

Sin embargo, a menudo es más claro usar malloc en lugar de la semántica especial de realloc. No es una cuestión de lo que funciona, pero no confundir a la gente leyendo el código.

(Edit: removed mention of realloc acting as free, since it's not standard C. See comments.)

 9
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-18 15:36:47