¿Qué es malloc en C?
La función malloc () significa asignación de memoria. Es una función que se utiliza para asignar un bloque de memoria de forma dinámica. Reserva espacio de memoria del tamaño especificado y devuelve el puntero nulo que apunta a la ubicación de la memoria. El puntero devuelto suele ser de tipo void. Significa que podemos asignar la función malloc a cualquier puntero.
Sintaxis
ptr = (cast_type *) malloc (byte_size);
Aquí,
- ptr es un puntero de cast_type.
- La función malloc devuelve un puntero a la memoria asignada de byte_size.
Example: ptr = (int *) malloc (50)
Cuando esta declaración se ejecuta con éxito, se reserva un espacio de memoria de 50 bytes. La dirección del primer byte del espacio reservado se asigna al puntero ptr de tipo int.
Considere otro ejemplo de implementación de malloc:
#includeint main(){int *ptr;ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */if (ptr != NULL) {*(ptr + 5) = 480; /* assign 480 to sixth integer */printf("Value of the 6th integer is %d",*(ptr + 5));}}
Producción:
Value of the 6th integer is 480
- Observe que se usó sizeof (* ptr) en lugar de sizeof (int) para hacer que el código sea más robusto cuando la declaración * ptr se transmita a un tipo de datos diferente más adelante.
- La asignación puede fallar si la memoria no es suficiente. En este caso, devuelve un puntero NULL. Por lo tanto, debe incluir código para verificar si hay un puntero NULL.
- Tenga en cuenta que la memoria asignada es contigua y puede tratarse como una matriz. Podemos usar aritmética de punteros para acceder a los elementos de la matriz en lugar de usar corchetes []. Aconsejamos usar + para referirse a elementos de matriz porque el uso de incrementación ++ o + = cambia la dirección almacenada por el puntero.
La función Malloc también se puede utilizar con el tipo de datos de caracteres, así como con tipos de datos complejos, como estructuras.