Título: Fallo en segmentación inexplicable (al menos para mi) Publicado por: Gallu en 17 Julio 2010, 12:47 pm Hola a todos , ejecutando el siguiente programa me da un fallo en segmentación , alguien me podria decia a que se debe ? gracias de antemano
Código
Título: Re: Fallo en segmentación inexplicable (al menos para mi) Publicado por: Og. en 17 Julio 2010, 15:31 pm Código no tiene tipo de retorno. deberia ser: Código
y al compilar en gcc no me da ningún Fallo de segmentación. Que compilador usas? Título: Re: Fallo en segmentación inexplicable (al menos para mi) Publicado por: cbug en 17 Julio 2010, 15:33 pm El fallo de segmentación luego de la muestra se debe a que no reservas el espacio en memoria para el puntero a la estructura, prueba añadiendo:
Código Título: Re: Fallo en segmentación inexplicable (al menos para mi) Publicado por: Gallu en 17 Julio 2010, 21:10 pm Gracias por vuestras respuestas ...
Código no tiene tipo de retorno. deberia ser: Código
y al compilar en gcc no me da ningún Fallo de segmentación. Que compilador usas? uso gcc y el error era al ejecutar, no al compilar , el prototipo del método crear cliente está en un .h , al postear el código olvide ponerlo El fallo de segmentación luego de la muestra se debe a que no reservas el espacio en memoria para el puntero a la estructura, prueba añadiendo: Código si, era esto lo que estaba fallando , gracias Título: Re: Fallo en segmentación inexplicable (al menos para mi) Publicado por: cbug en 17 Julio 2010, 21:38 pm De nada :D
Título: Re: Fallo en segmentación inexplicable (al menos para mi) Publicado por: nicolas_cof en 18 Julio 2010, 00:21 am Didacso, algunos consejos...
> Utiliza strncpy() (http://c.conclase.com/librerias/?ansifun=strncpy) en vez de strcpy() https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html > Nunca haces uso de la variable int aux2; > Tanto Didacso como cbug, no hace falta castear malloc() ya que esta devuelve un void* > En dni y direccion es sizeof( char ); no sizeof( char* ); > Te falta asignar espacio para el caracter finalizador de cadena '\0' Código: cliente->dni = malloc( (strlen( aux ) + 1) * sizeof( char ) ); > Acuerdate de liberar la memoria con free() para no dejar memory leaks Salu10. |