elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  "Segmentation Fault" cuando igualo una lista a una estructura que contiene otra
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: "Segmentation Fault" cuando igualo una lista a una estructura que contiene otra  (Leído 1,111 veces)
Ccomplica

Desconectado Desconectado

Mensajes: 7


Ver Perfil
"Segmentation Fault" cuando igualo una lista a una estructura que contiene otra
« en: 21 Noviembre 2013, 20:37 pm »

Buenas tardes comunidad. Tengo una consulta sobre un error tipo Segmentation fault que me tira el siguiente codigo cuando quiero igualar una lista creada, a una que está incluida en otra estructura. El código es el siguiente:

Funcion para crearArchivo en el directorio.

Código
  1. Archivo crearArchivoDirectorio(Directorio dir, Cadena nombre){
  2.    Archivo arch;
  3.    ListaArchivos archivoLista=new _listaArchivos;
  4.  
  5.    archivoLista=crearListaArchivos();
  6.  
  7.    arch=crearArchivo(nombre);
  8.    printf("archivo creado");
  9.  
  10.    insertarArchivoListaArchivos(archivoLista,arch);
  11.    printf("lista creada");
  12.  
  13.    dir->lista=archivoLista; //ACA ME TIRA EL ERROR EN EL DEBUGGER
  14.  
  15.    return arch;
  16. };

Funcion para insertar archivo en lista de archivos:
Código
  1. void insertarArchivoListaArchivos(ListaArchivos &lista, Archivo archivo){
  2.  
  3.    ListaArchivos aux, nuevoArch=new _listaArchivos;
  4.  
  5.    nuevoArch->siguiente=NULL;
  6.    nuevoArch->archivo=archivo;
  7.  
  8.    if(lista==NULL){
  9.        lista=nuevoArch;
  10.    }
  11.    else{
  12.        aux=lista;
  13.  
  14.        while(aux->siguiente!=NULL)
  15.            aux=aux->siguiente;
  16.        aux->siguiente=nuevoArch;
  17.    }
  18. };

La cosa es así: Yo le paso a la primera funcion una estructura de tipo Directorio, y una cadena con el nombre al que le quiero asignar al archivo a incluir en la lista de archivos dentro de la estructura directorio.

El error me lo tira cuando quiero igualar la lista creada localmente en la primera funcion, con la lista que está declarada e inicializada en la estructura directorio.

Supongo que es me falta reservar espacio de memoria en algún lado, no me doy cuenta donde...

Alguna idea?

Desde ya, cualquier aporte sera muy agradecido! Si tienen dudas sobre el codigo pregunten.


Saludos!


En línea

xaps

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: "Segmentation Fault" cuando igualo una lista a una estructura que contiene otra
« Respuesta #1 en: 21 Noviembre 2013, 21:03 pm »

Te recomiendo que en la clase ListaArchivos te hagas una función copiadora o que sobrecargues el operador de asignación, puesto que puede que el compilador esté intentando usar un método inapropiado y haga saltar el error.

Por cierto, ¿no deberías cambiar en la tercera línea de ambos códigos el nombre _listaArchivos por ListaArchivos?

Saludos


En línea

"The programmers of tomorrow are the wizards of the future" - Gave Newel
Ccomplica

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: "Segmentation Fault" cuando igualo una lista a una estructura que contiene otra
« Respuesta #2 en: 22 Noviembre 2013, 10:38 am »

Te recomiendo que en la clase ListaArchivos te hagas una función copiadora o que sobrecargues el operador de asignación, puesto que puede que el compilador esté intentando usar un método inapropiado y haga saltar el error.

Por cierto, ¿no deberías cambiar en la tercera línea de ambos códigos el nombre _listaArchivos por ListaArchivos?

Saludos
Buen día xaps, gracias por responder! Te comento que ListaArchivos es una estructura, o vos te referias al void insertarArchivoListaArchivo? A que te refieres cuando me dices una funcion copiadora?
En cuanto a la definicion de variables en las terceras lineas estan bien para este codigo porque la estructura (definida en un header) lo permite.

Gracias de nuevo,

Ccoomplica
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines