![]() |
Creado por Luis Romero
hace más de 8 años
|
|
Como ya sabemos un puntero nos sirve para acceder a las posiciones de memoria asignadas a un programa. En la librería stdlib.h están definidas las siguientes funciones: • void *calloc(size_t nobj, size_t size) calloc obtiene (reserva) espacio en memoria para alojar un vector (una colección) de nobj objetos, cada uno de ellos de tamaño size. Si no hay memoria disponible se devuelve NULL. El espacio reservado se inicializa a bytes de ceros. Obsérvese que calloc devuelve un (void *) y que para asignar la memoria que devuelve a un tipo Tipo_t hay que utilizar un operador de ahormado: (Tipo_T *) Ejemplo: char * c; c = (char *) calloc (40, sizeof(char)); • void *malloc(size_t size) malloc funciona de forma similar a calloc salvo que: a) no inicializa el espacio b) es necesario saber el tamaño exacto de las posiciones de memoria solicitadas. El ejemplo anterior se puede reescribir: char * c; c = (char *) malloc (40*sizeof(char)); • void *realloc(void *p, size_t size) realloc cambia el tamaño del objeto al que apunta p y lo hace de tamaño size. El contenido de la memoria no cambiará en las posiciones ya ocupadas. Si el nuevo tamaño es mayor que el antiguo, no se inicializan a ningún valor las nuevas posiciones. En el caso en que no hubiese suficiente memoria para “realojar” al nuevo puntero, se devuelve NULL y p no varía. El puntero que se pasa como argumento ha de ser NULL o bien un puntero devuelto por malloc(), calloc() o realloc().
¿Quieres crear tus propios Apuntes gratis con GoConqr? Más información.