UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

6.10.3. Memoria sin inicializar

Otra característica de la gestión dinámica de memoria en C es que la inicialización de la memoria se realiza sólo si así se solicita mediante la llamada a la función calloc. En otras palabras, cuando se reserva una porción de memoria mediante una llamada a malloc, esa porción es visible al programa con su contenido intacto. Es decir, que no se inicializa a ningún valor en particular. Lo más probable es que contenga restos de la información que se ha almacenado previamente.

Este comportamiento está pensado para poder obtener el mayor rendimiento de un programa. A menudo hay porciones de memoria que se solicitan, pero que a continuación se inicializan desde el propio programa a unos valores concretos. En este caso, si malloc inicializase la memoria, se haría esta tarea dos veces, con la consiguiente pérdida de tiempo. Por este motivo, sólo la función calloc realiza esta tarea. Como ejemplo, en la siguiente porción de código se intenta mostrar por pantalla como cadena de texto la basura que haya quedado almacenada en esa zona de memoria.

char *string;
string = (char *)malloc(100);
printf("%s\n", string);