Las memorias dinámicas sirven para poder reservar o liberar memoria dinamicamente cuando se necesite, por medio de punteros. Esto debido a que las variables y vectores en lenguaje c ocupan un tamaño fijo y no varia durante la ejecución del programa.
Es memoria que se reservara en el tiempo de ejecución del código. Tiene ventajas frente a la memoria estática y es que su tamaño puede o no variar durante la ejecución del programa pertinente. En nuestro lenguaje que es el C, el programador se encarga de liberar esta memoria cuando no la requiera mas, a través de FREE.
Este uso de memoria dinámica es importante cuando "antes de", no conocemos el numero de datos que vamos a tratar en el código
Para el uso de las memorias dinámicas siempre se hará uso de la siguiente biblioteca:
<stdlib.h>
El manejo de memoria dinámica es la base del poder del lenguaje C y le da la capacidad de crear programas complejos que emplean grandes cantidades de memoria y los maneja de
manera eficiente.
MALLOC:
La función malloc sirve para solicitar un bloque de memoria del tamaño suministrado como parámetro. Devuelve un puntero a la zona de memoria concedida:.
El tamaño se especifica en bytes. Se garantiza que la zona de memoria concedida no está ocupada por ninguna otra variable ni otra zona devuelta por malloc.
Si malloc 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*
Muchas funciones que devuelven direcciones de memoria utilizan los punteros void*. Un puntero void* puede convertirse a cualquier otra clase de puntero.
En la declaración de las memorias dinámicas nos encontramos con la función sizeof la cual devuelve el tamaño en bytes que ocupa una variable o algún tipo de dato.
DECLARACION DE MALLOC:
ptr = (int *)malloc(number*sizeof(int)); ----> "ptr" es el puntero.
"int" es el tipo de dato que se manejara en malloc.
"number" es la variable en donde esta guardada la cantidad de espacios que reservar en la memoria.
CODIGO MALLOC:
#include <stdio.h>
#include <stdlib.h> --------------------------> Archivos de cabecera. importante que nunca
#include <iostream> nunca puede faltar la libreria <stdlib.h>, ya
que en esta se encuentran las funciones de
int main(){ memorias dinamicas.
int number; -------------------------------> Declaracion de las variables.
int *ptr; *ptr--> Puntero entero.
int i;
printf("Cuantos espacios desea reservar en la memoria? ");
scanf("%d", &number); -------------------------------> Lee la cantidad de espacios que se reservaran
en memoria.
ptr = (int *)malloc(number*sizeof(int)); ---> Crear espacio en la memoria dinamica con malloc.
if(ptr!=NULL){ -----------------------> Esta condición es importante para saber si la memoria cuenta
for(i=0 ; i<number ; i++){ con espacio disponible, ya que si apunta a NULL significa que
*(ptr+i) = i + 1; no hay espacio.
}
for(i=0 ; i<number ; i++) {
printf("%d\n", *(ptr+i)); -------------------> Con este ciclo se imprime del 1 hasta el numero digitado
} en la variable number.
free(ptr); -----------------------------> Con free liberamos la memoria reservada anteriormente
system("PAUSE"); con malloc.
return 0;
}
else {
printf("\nLa reserva en memoria no es suficiente.\n");
return 1;
}
}
A traves de este enlace podras descargar el codigo referente a Memorias dinamicas - Malloc.
A continuación se podra observar el video turorial referente al tema de memorias dinámicas - malloc.
ESPERAMOS QUE HAYAN ENTENDIDO ESTE TEMA!! :D
No hay comentarios:
Publicar un comentario