26/03/2012, 13:43
|
| | Fecha de Ingreso: junio-2010 Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 7 meses Puntos: 73 | |
Respuesta: Crear etiquetas autoincrementales con memoria dinámica El prototipo de malloc es
void *malloc (int bytes_a_reservar);
Si necesitas que los datos sean de otro tipo, tendrás que hacer un cast y calcular el número de bytes que necesitas. Por ejemplo:
ptrInt = (int *)malloc(10, sizeof(int))
te reservará espacio para 10 enteros.
El prototipo de free es
void free(void *ptr)
Aquí no necesitas hacer el cast, da igual el tipo de dato apuntado por ptr. Eso sí, asegúrate de que lo que liberes con free sean bloques de memoria reservados anteriormente mediante malloc o alguna de las funciones de su familia (calloc y realloc).
Sobre la generación de las etiquetas, supongo que te refieres a que la primera vez que llamo a etiqNew() tiene que devolverme #etiq1, la segunda vez, #etiq2, y así sucesivamente. Lo que no tengo claro es el borrado. Por ejemplo, si tengo ya de #etiq1 a #etiq5 y elimino #etiq3 porque ya no la necesito, la próxima etiqueta que me devuelva, ¿tendría que ser #etiq3, ya que "la casilla está libre", o simplemente devuelvo #etiq6? Lo digo porque, en el primer caso, la cosa se complica. |