La función malloc
yisuscraistmxApuntes13 de Diciembre de 2018
517 Palabras (3 Páginas)192 Visitas
ÍNDICE
1 INTRODUCCIÓN 3
2 OBJETIVO DE LA FUNCIÓN 3
3 SINTAXIS 3
3.1 PARÁMETROS DE ENTRADA 3
3.2 PARÁMETRO DE SALIDA 4
4 EJEMPLO 4
5 REFERENCIAS 5
1 Introducción
Cuando trabajamos con punteros y estructuras dinámicas de datos es inevitable habar de la asignación dinámica de memoria por lo que es necesario conocer una función que nos ayudará bastante en este tema, dicha función en malloc.
2 Objetivo de la función
Se utiliza para solicitar u bloque de memoria del tamaño suministrado como parámetro, devuelve un puntero a la zona de memoria concedida. Se garantiza que la zona de memoria concedida no está ocupada por ninguna otra variable ni otra zona devuelta por malloc, si es incapaz de conceder el bloque (p.ej. no hay memoria suficiente), devuelve un puntero nulo.
La función malloc devuelve un puntero inespecífico, que no apunta a un tipo de datos determinado. En C, estos punteros sin tipo se declaran como void* los punteros void* pueden convertirse a cualquier otra clase de puntero.
3 Sintaxis
La sintaxis de la función malloc es:
void* malloc (numero_de_bytes)
Donde void* que es un puntero inespecífico puede ser cambiado a cualquier tipo de datos que se necesite, numero_de_bytes es la cantidad de memoria en bytes que serán reservados. Tomando como base lo anterior tenemos lo siguiente:
int *ptr = (int *)malloc(1000)
Donde int *ptr es la declaración de un puntero del tipo entero que apuntara a una zona de memoria asignada por malloc del tamaño de 1000 bytes del tipo entero (int *)malloc(1000).
3.1 Parámetros de entrada
Como parametro de entrada como lo vimos en las lineas de arriba tenemos el tamaño de la memoria que se va a solicitar en bytes, en ocasiones esto es un problema, por lo que para resolver este tema usamos el operador sizeof, por ejemplo, digamos que tenemos una variable calif del tipo entero (int) donde almacenaremos calificaciones, y queremos reservar un espacio en memoria para almacenar otra calificación lo haríamos de la siguente manera:
Int *ptr = (int *)malloc(sizeof(calif))
En este caso lo que hace malloc es reservarnos un espacio en memoria del mismo tamaño que la variable calif, el puntero resultante de la asignación será implementaado por el puntero ptr.
3.2 Parámetro de salida
La función malloc devuelve un puntero al bloque de memoria asignado, es decir, devuelve la direccióndel bloque de memoria que se asigno a la función.
4 Ejemplo
El siguiente programa ejemplifica de manera sencilla el uso de malloc, solicitando dos numeros enteros, de los cuales, uno lo almacenara en una vaiable estatica y otro en un espacio de memoria solicitado por malloc.
#include <stdio.h>
#include <stdlib.h>
int main() {
int num; //declara una variable para almacenar enteros
int *ptr; //declara un puntero a enteros
//solicita el ingreso de un numero entero por teclado y lo almancena en num
printf("Escribe cualquier numero entero: ");
scanf("%i",&num);
//solicita un espacio en memoria con el tamaño de la variable num, guarda la diraccion del bloque asigndo en el puntero ptr
ptr = (int*)malloc(sizeof(num));
//solicita el ingreso de otro numero entero por teclado y lo almancena en el nuevo bloque de memoria
printf("\nEscribe otro numero entero: ");
scanf("%i",ptr);
...