Discussion:
estructuras dinamicas
(demasiado antiguo para responder)
JaVoNess
2003-12-07 17:33:22 UTC
Permalink
Hola a todos, tengo un pequeño problemita, que paso a explicaros a ver
si alguien puede echarme una mano. Gracias por anticipado a todos:
Tengo una tabla de X elementos y cada elemento es una estructura, de
manera que segun me vayan haciendo falta elementos en tiempo de
ejecucion pues voy reservando memoria. Es decir a medida que el
programa avenza necesito ir reservando memoria para un elemento mas
(una estructura mas). El caso es que he mirado en muchos libros
propios y manuales en la red pero no consigo hacerlo del todo bien.
Alguna sugerencia de como solucionarlo?
ViKT0RY
2003-12-07 18:09:29 UTC
Permalink
Se hace todo con puntero=malloc(sizeof(struct miestructura)); y
free(puntero);. Hay tropecientos documentos sencillos sobre como hacerlo,
busca bien.
Normalmente se le llaman Listas dinámicas o enlazadas.
Fernando Arbeiza
2003-12-07 18:29:47 UTC
Permalink
Post by JaVoNess
Alguna sugerencia de como solucionarlo?
Puedes utilizar punteros como vectores dinámicos. Reservas memoria como

puntero = malloc(numero_punteros * sizeof (* puntero));

Y cuando tengas que aumentar al vector:

puntero = realloc(puntero, nuevo_numero);

Recuerda comprobar los errores de mallo y realloc. La salida de realloc
deberías guardarla en una variable temporal y comprobarla antes de
almacenarla.

De todas formas, lo que deberías hacer es postear el código que te está
dando problemas, y quizá podamos darte algún tipo de solución.

Un saludo.
--
Fernando Arbeiza <URL: mailto:***@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
JaVoNess
2003-12-08 18:19:30 UTC
Permalink
Post by Fernando Arbeiza
Post by JaVoNess
Alguna sugerencia de como solucionarlo?
Puedes utilizar punteros como vectores dinámicos. Reservas memoria como
puntero = malloc(numero_punteros * sizeof (* puntero));
puntero = realloc(puntero, nuevo_numero);
Recuerda comprobar los errores de mallo y realloc. La salida de realloc
deberías guardarla en una variable temporal y comprobarla antes de
almacenarla.
De todas formas, lo que deberías hacer es postear el código que te está
dando problemas, y quizá podamos darte algún tipo de solución.
Un saludo.
Mmmmm entiendo, ya va todo mucho mejor, exceptuando un par de warnings
que solucionare ahora, el problema estaba en que utilizaba mal
Realloc. Muchas gracias a los dos. Un saludo ;)

Loading...