#include <stdio.h>
#include <stdlib.h>
int main()
{
int bytes;
char *mem;
printf("Bytes a reservar: ");
scanf("%i",&bytes);
mem = (char *) malloc(bytes);
if (mem == NULL){
printf( "Memoria no disponible\n" ); system("PAUSE>NUL");}
else {
printf("Memoria reservada: %i bytes\n", bytes);
system("pause>nul");
printf("Direccion: %p\n", mem);
system("pause>nul");
free(mem);
}
}
Primero usa malloc y determina los bytes a usar, luego hace una comprobación si no da NULL es que hay memoria disponible y sigue con el proceso, te indica los bytes que has reservado y te dice la dirección(puntero) donde están.
Por último libera la memoria con free.
Malloc y free estan en la libreria stdlib.h.
Existen varias funciones para la asignación dinámica de la memoria, pero las dos funciones básicas son malloc y free.
La función malloc (Memory allocate - asignar memoria) reservar una parte de la memoria y devuelve la dirección del comienzo de esa parte. Esta dirección podemos almacenarla en un puntero y así podemos acceder a la memoria reservada. La función malloc tiene el siguiente formato:
Código:
puntero = (tipo_de_variable *) malloc( número de bytes a reservar );
-puntero: es una variable tipo puntero que almacena la dirección del bloque de memoria reservado. Puede ser un puntero a char, int, float,...
-(tipo_de_variable *): es lo que se llama un molde. La función malloc nos reserva una cierta cantidad de bytes y devuelve un puntero del tipo void (que es uno genérico). Con el molde le indicamos al compilador que lo convierta en un puntero del mismo tipo que la variable puntero.