De forma predeterminada , la función malloc asigna un bloque contiguo o adyacente, de la memoria en una zona conocida como un montón, que se puede acceder mediante un programa para almacenar datos y variables. La función malloc toma un único argumento , un entero largo o de 32 bits que representa el número de bytes a asignar del montón. La función malloc pide al sistema para un bloque de memoria del tamaño especificado y devuelve un puntero - una dirección , desde el punto de vista del lenguaje de programación - . Para el primer elemento del bloque
valor devuelto
ordenadores sólo tienen una cantidad limitada de memoria , por lo que es posible que la función malloc para pedir más memoria que la disponible físicamente y hacer que un programa se bloquee. Si no hay suficiente memoria disponible , malloc devuelve un puntero nulo o un puntero con un valor de cero. Para evitar que un programa falle , los programadores deben probar explícitamente que malloc no ha vuelto nulo, para que sepan que la memoria solicitada se asignó correctamente antes de intentar usarlo .
Liberar memoria
Del mismo modo, un equipo no puede asignar permanentemente más y más memoria - y sobrescribir varias veces un puntero que apunta a la memoria asignados de forma dinámica puede conducir a los datos dejen de ser accesibles . Por lo tanto, la memoria dinámicamente asignada debe ser liberado de nuevo al banco de memoria del sistema, mediante la función gratuita , una vez que ya no es necesario . Una vez que el proceso termina , toda la memoria dinámicamente asignada se libera de nuevo al bloque de memoria .
Sintaxis
Malloc devuelve un puntero genérico, o un puntero a void , pero el puntero puede ser escrito o encasillado para indicar el tipo de datos a los que apunta. La sintaxis "char * str = (char *) malloc ( 40 ) ", por ejemplo , asigna memoria para una cadena de 40 caracteres de longitud . Alternativamente , los programadores pueden declarar un puntero e invocar malloc cuando quieren hacer espacio para los elementos de una matriz . Sin embargo, es importante tener en cuenta que la función malloc sólo asigna memoria . No hace vacío o no inicializar la memoria que asigna .