Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/03/2012, 13:43
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 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.