Segmentation Fault na recursão

Segmentation Fault na recursão

por Fernanda de Camargo Magano -
Número de respostas: 4

Na função recursiva o meu programa está dando segmentation fault. O compilador acusa que o ponteiro que eu usei para percorrer a lista não foi inicializado.  Na verdade eu inicializei o ponteiro dentro de um if, porque se eu inicializasse fora do if, toda vez que eu chamasse essa função recursiva o meu ponteiro iria ser modificado. Isso estragaria o valor do ponteiro.

Se eu usasse um ponteiro para o início da lista e outro para percorrê-la, como eu poderia inicializar sem estragar o valor armazenado?

 

Em resposta à Fernanda de Camargo Magano

Re: Segmentation Fault na recursão

por José Coelho de Pina -

Na função recursiva o meu programa está dando segmentation fault.

Sobre isto talvez ajude olhar o problema que o Fábio descreveu no tópico

Recursão causando stack overflow

Uma das condições da base da recursão é o pixel já ter sido vistado, há um campo para isto na struct PixelRGB.

O compilador acusa que o ponteiro que eu usei para percorrer a lista não foi inicializado.

Já sobre o aviso, faz diferença se o compilador dir may be used uninitialized ou is used uninitialized.
Veja o que o é dito sobre isto em

Perguntas e respostas mais frequentes sobre compilação

perguntas [16] e [17].

Em resposta à José Coelho de Pina

Re: Segmentation Fault na recursão

por Fernanda de Camargo Magano -

Para verificar se eu posso apontar para o pixel eu estou checando as três condições: se ele existe, se a cor é igual a da semente e se não foi visitado.

Por isso, fiquei pensando se o erro estaria ligado com o ponteiro. O meu warning é: may be used uninitialized e eu olhei agora no "Perguntas e respostas mais frequentes sobre compilação" e o que eu fiz foi parecido com o que está sendo mostrado lá. Eu inicializo o ponteiro dentro do if. Eu vou tentar modificar esse if e o restante da função para ver se desaparece o Segmentatio Fault.

Em resposta à Fernanda de Camargo Magano

Re: Segmentation Fault na recursão

por José Coelho de Pina -

Para verificar se eu posso apontar para o pixel eu estou checando as três condições: se ele existe, se a cor é igual a da semente e se não foi visitado.

Certo.
Depois disso você pode proceder como sugerido no tópico:

Stack overflow in thread 1: can't grow stack to 0xbe028ff8 na funcao pixelsRegiao