el telnet
1. Asignación de memoria dinámica en ANSI C
En el lenguaje ANSI C estándar se empleaban 3 funciones que resultaban fundamentales para la asignación dinámica de memoria: malloc, callocy free (stdlib.h). A continuación se explican brevemente cada una de ellas y se mostraran algunos ejemplos que permiten asignar de manera dinámica la memoria, al estilo ANSI C. Para realizarasignación dinámica de memoria siempre será necesario emplear un puntero del tipo de dato que estemos manejando.
malloc: Asigna un bloque de n número de bytes en el heap de la memoria. Esto le permite a unprograma disponer de memoria como la necesite, y en el tamaño que desee. De esta manera se crea un bloque de almacenamiento dinámico, es decir se crean datos en tiempo de ejecución.
Si tiene éxito,malloc regresa un apuntador a la nueva dirección del bloque de memoria. Si no existe suficiente espacio para el nuevo bloque, regresara NULL.
Sintaxis:
void *malloc( num_bytes );
El siguienteejemplo permite asignar un espacio de memoria para almacenar 80 caracteres en una variable char de tipo puntero llamada buffer. Al final el bloque de memoria es liberado con la función free.
#include/* ejemplo de malloc */
#include
#define Max 80
int main()
{
char *buffer;
if ( (buffer = (char *) malloc(Max) ) == NULL)
printf("No hay memoria para asignar");
else
gets(buffer);printf("salida %s\n", buffer);
free(buffer);
printf("salida %s\n", buffer);
system("PAUSE");
return 0;
}
free: Se emplea para liberar un bloque de memoria previamente asignado por malloc o calloc. Noregresa valor alguno. Recuerde que es muy importante liberar todos aquellos espacios de memoria que hayan sido asignados de manera dinámica, pues esto asegura que sea poco probable que se presentenproblemas de espacio en memoria RAM.
Sintaxis:
void free(void *mem_addres)
Por ejemplo: free(buffer);
Operador sizeof : Regresa el tamaño, en bytes, del tipo de dato pasado como...
Regístrate para leer el documento completo.