Mi programa truena solo la primera vez que se ejecuta y despues sirve

Iniciado por diegomore97, 8 Agosto 2018, 06:22 AM

0 Miembros y 1 Visitante están viendo este tema.

diegomore97

Buenas tardes compañeros tengo un problema con un programa en c++ son listas y punteros lo raro aqui es que cuando abro el programa por primera vez me truena y despues al ejecutar el programa por segunda vez ya me funciona con normalidad, pero al reiniciar el equipo regresa al mismo problema :c

alguien que me pueda orientar, les dejo el link de mi programa:

https://github.com/diegomore97/Calculadora-Basica-Listas

engel lex

es un programa de más de 500 lineas, probablemente es un puntero o variable sin inicializar

usa el debugger de tu ide y busca en que linea falla, entonces indicas cual
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

CalgaryCorpus

Mire' solo el final de ese kilometrico programa y al menos tienes un problema en la funcion copiaOperacion pues pides memoria para una cierta cantidad de elementos, digamos n+1, copias n caracteres, un + y un 0.

Si pides n+1 elementos en memoria y copias n+2, estas invitando a que tu programa se porte mal. O copias menos o pides mas, decidete, tal como lo tienes es una receta para el desastre.

Tal vez haya otro problema similar por ahi, te recomiendo recortar tu programa para depurarlo si se sigue portando mal. Tal como esta se hace dificil adivinar donde esta mal algo.
Aqui mi perfil en LinkedIn, invitame un cafe aqui

diegomore97

Me salio esto, error en la linea 255 en la biblioteca operacion.h pero pues todos los metodos de insertar son iguales y si me funcionan

diegomore97

Que hay mens ya regrese, les traigo novedades ya se que no podian dormir por no saber como termino mi caso, tras darme de topes todo el dia tratando de resolver el problema los 2 tenia razon, admin: el programa me tronaba porque no inicialize un puntero del constructor de una clase lo iguale a null y ya todo fine no me tronaba pero el resultado me lo daba mal por la funcion copia operacion, aqui es donde entra el comentario del otro men, Calgary: tenia razon reservaba memoria de mas en la funcion copiaOperacion finalmente reserve lo que iba a ocupar y despues lo liberaba con free la funcion quedo asi "char *aux= (char*)malloc(tamanioCadena*sizeof(char)); ", si quieren calar el programa son bienvenidos : https://github.com/diegomore97/Calculadora-Basica-Listas, la verdad si me moleste porque no corrigieron el problema directamente, pero tambien estoy agradecido porque me ayudaron a que yo mismo me pusiera a trabajar y encontrara la solucion yo mismo (como los psicologos xd)

una ultima pregunta: porque despues de que tronaba por primera vez el programa despues de abrirlo nuevamente funcionaba correctamente?

Saludos

CalgaryCorpus

Si utilizas mal la memoria, como en el caso de tu programa anterior que sobreescribia memoria, no existe garantia que esto siempre se caiga, o que siempre funcione, si tiene algun comportamiento deterministico, es suerte. Desde mi punto de vista, tienes suerte que el programa se caiga y te permita descubrir sus errores. Muchos problemas en el software se presentan despues de mucho tiempo, por ejemplo, grandes fallas de seguridad han pasado an~os sin ser descubiertas.

(Otras observaciones:
- Interpretaste mal lo que dije. Nunca dije que estabas reservando memoria de mas, al reves, quise decir que estabas pidiendo memoria insuficiente, y copiando de mas en esa memoria insuficiente.
-  sizeof(char) es siempre 1, no necesitas hacer la multiplicacion por sizeof(char), pues ya sabes que la multiplicacion por 1 es superflua.
)
Aqui mi perfil en LinkedIn, invitame un cafe aqui