He leído con interés la publicación C difference between malloc and calloc. Estoy utilizando malloc en mi código y me gustaría saber qué diferencia tendré con el uso de calloc.calloc v/s malloc y eficiencia de tiempo
Mi presente (pseudo) código con malloc:
Escenario 1
int main()
{
allocate large arrays with malloc
INITIALIZE ALL ARRAY ELEMENTS TO ZERO
for loop //say 1000 times
do something and write results to arrays
end for loop
FREE ARRAYS with free command
} //end main
Si uso calloc en lugar de malloc, entonces tendré:
Scenario2
int main()
{
for loop //say 1000 times
ALLOCATION OF ARRAYS WITH CALLOC
do something and write results to arrays
FREE ARRAYS with free command
end for loop
} //end main
Tengo tres preguntas:
¿Cuál de los escenarios es más eficiente si las matrices son muy grandes?
¿Cuál de los escenarios será más eficiente en el tiempo si las matrices son muy grandes?
En ambos casos, solo estoy escribiendo en matrices en el sentido de que para cualquier iteración dada en el ciclo for, estoy escribiendo cada matriz secuencialmente desde el primer elemento hasta el último elemento. La pregunta importante: si estoy utilizando malloc como en el escenario 1, entonces ¿es necesario que inicialice los elementos a cero? Decir con malloc tengo array z = [garbage1, garbage2, garbage 3]. Para cada iteración, estoy escribiendo elementos secuencialmente, es decir, en la primera iteración obtengo z = [some_result, garbage2, garbage3], en la segunda iteración que obtengo en la primera iteración obtengo z = [some_result, another_result, garbage3] y así encendido, entonces ¿necesito específicamente inicializar mis matrices después de malloc?
posible duplicado de http://stackoverflow.com/questions/1538420/c-difference-between-malloc-and-calloc –
Sí, esta es la razón por la que mencioné que leí la otra publicación. Yo quería ser un poco más específico aquí. – yCalleecharan
¿Lo has medido tú mismo? ¿Cuáles fueron los resultados en su máquina? – Secure