Problema programa en C

javithelong

Lo de poner nombres con prefijos dependiendo del tipo que sean, a mi personalmente no me gusta, porque nunca me acuerdo del nombre entero de la variable y se me hace muy largo escribirlo, pero weno :P

No, el casting del malloc no da warning, pero otras funciones que necesitan castings a char* o cosas asi, si lo dan

Con el casting en el malloc, consigues que (por ejemplo) el DDD te muestre el tipo de dato bien, porque DDD no sabe mostrar el contenido de un puntero void, en cambio, si le dices que es char* te lo pone dabuti

LOc0

#30

He hecho varios cambios:

-Modificada la estructura CONJUNTOM.

-Modificada la función Agregarmatriz().

-He quitado tb los casts del malloc que no hacen falta.

-Corregidas otras cosas relacionadas con las ->

Salu2 ;)

PD: Cuando lo terminéis enviádmelo por mp ;)

cabron

Hombre está claro que hay casos en los que es necesario/conveniente un cast, no hablaba de todos los casts en general, solo en el caso de malloc.

De todas formas, ya se que no va a explotar el mundo por hacer un cast en malloc , cuando dije que no hacia falta ponerlo solo era un comentario : )

L

Saludos y malas noticias :(

Siento decir que hemos aplicado tus cambios tal y como as puesto y el tema de la liberacion sigue igual. Libera lo que le da la gana.
Todo esto teniendo en cuenta que queremos destruir una matriz antes de finalizar el programa.

Podrias probarte con tu codigo creandote un pequeño menu con crear las matrices como lo tienes puesto con tu bucle. Luego otra opcion de listarlo todo y luego una opcion de destruir una matriz y ver que destruyes una matriz y luego listas y el programa libera lo que le da la gana. Si vuelves a intentar destruir esa matriz el programa libera otros datos.

Nosé pero de momento nos quedamos con tu actualizacion nº3. Nosotros no entendemos mucho cuando usas doble puntero y cuando no y demas. Nos funciona todo excepto el destruir una matriz cuando se desea. Por lo demas programa al 90% :D

PD: Me lo acabo de pensar y te envio nuestro codigo con los cambios de la actualizacion nº4 haber como ves el tema de la liberacion.

Edit: dame una direccion de correo tuya por PM que el programa son 400 lineas y lo tenemos con libreria por separado.

LOc0

La versión 4 es la más "correcta" de todas. En la 3, cuando se llama a la función AGREGAMATRIZ() (y se le manda la matriz 'A' que previamente habíamos creado con CREAMATRIZ() ) lo que se hace es copiar esa matriz en un elemento del array lista[] (por ejemplo lista[4]). El problema es que lo guarda en OTRA dirección de memoria y lo que nosotros queremos es que lista[4] apunte a la direccion de memoria donde está guardada 'A', para que cuando liberemos lista[n] en realidad estemos liberando 'A'. (Lista[] es un array de punteros a MATRIZ)

Parece un trabalenguas, pero si se lee con atención se entiende.

El tema de la liberación habría que comprobarlo con un debugger e ir viendo el valor de los punteros...

Salu2 ;)

L

Todo lo que tiene un principio tien un final. Para nosotros el tema queda acabado ya que tenemos nuestro programa terminado :D

  • Gracias a todos los que nos habeis ayudado de una manera o de otra con vuestros mensajes. Yo y mi compi EndeEsgue os estaremos eternamente agradecidos :D

  • Remarcar que sin la ayuda de LoCo no nos hubieramos salido y seguiriamos igual. El mismo tiene el codigo y juzgara si se parece a su codigo o que. Las estructuras y funciones de crear matriz y agregarmatriz claro que son calcadas porque eso es lo que no sabiamos hacer con C. Por lo demas no creo que sea igual ya que el codigo ha acabado teniendo 563 linias.
    Gracias compañero!!!!!!!!!!!!!!!!!!!!!


  • LoCo ahora que tienes el codigo miratelo y ya nos diras algo haber que te parece y si encuentras el fallo de la liberacion, ya hemos respondido a tu correo.
EnDeEsgue

LOc0 te voy a montar una puta estatua en medio de la facultad de mates xDD Muchas gracias tio, no sabes como te kiero :** xDD

LOc0

JAJAJAJAJAJA, me voy a poner colorado y to :D :D La verdad es que no es para tanto ;)... La práctica completa es bastante más extensa. (Yo simplemente os he dado un empujoncito :) )

Te he contestado al email.

THE END

Salu2 ;)

Usuarios habituales