Título: time() localtime() Publicado por: soyloqbuskas en 3 Noviembre 2012, 06:03 am Buenas a todos!
tengo un problema con esta funcion...me da fallo de segmentacion en la funcion localtime() Código
¿Por que me da fallo de segmentacion? Gracias, un saludo Título: Re: time() localtime() Publicado por: ecfisa en 3 Noviembre 2012, 07:52 am Hola soyloqbuskas.
No sé con que compilador estes trabajando, pero probé tu código en CodeBlocks (GNU GCC Compiler) y en Builder C++ 6 y en ambos funciona sin provocar error alguno. Pero de ese modo se te presenta el problema de como liberar la memoria asignada con malloc a la variable local fecha. Quizá sería mejor: Código
Saludos. Título: Re: time() localtime() Publicado por: BatchianoISpyxolo en 3 Noviembre 2012, 13:17 pm Sep, En CodeBlocks con el GCC funciona aunque hay que liberar la memoria de fecha xD
Compilando con gcc desde consola te debería de ir igual :] Título: Re: time() localtime() Publicado por: Khronos14 en 3 Noviembre 2012, 13:50 pm Te da fallo de segmentación por los punteros dia y mes. Los inicias a vacío y luego modificas su tamaño, sobreescribiendo datos de la pila que pueden afectar a otras variables. Falle a veces porque depende los datos que haya en la pila y si llega a afectar al segmento de datos es cuando rompe el programa.
La solución es declarar un array de 4 caracteres y no te complicas. Otra cosa: no te olvides de hacer un free después de llamar a getDateTime, porque produce un Memory Leak. Saludos. Título: Re: time() localtime() Publicado por: rir3760 en 3 Noviembre 2012, 16:55 pm Te da fallo de segmentación por los punteros dia y mes. Los inicias a vacío y luego modificas su tamaño, sobreescribiendo datos de la pila que pueden afectar a otras variables. No hay problema en la forma en que soyloqbuskas utiliza los punteros "mes" y "dia":Código Ya que en cada una de esas asignaciones solo almacena en la variable "dia" una nueva dirección de memoria: la dirección donde se almacena la cadena literal. En cuanto a la función para formatear la fecha no es necesario hacerlo manualmente, en su lugar se puede utilizar la función strftime (http://www.cplusplus.com/reference/clibrary/ctime/strftime/) (prototipo en <time.h>), por ejemplo (sin validación de errores): Código
Un saludo |