Ir para conteúdo
Fórum Script Brasil
  • 0

Segmentation fault com valores elevados


arcsaraiva

Pergunta

Prezados,

Estou executando um código que está apresentando erro de segmentation fault em duas ocasiões distintas.

Para executar são passados inúmeros parâmetros. Sendo a chamada assim:

./prog 7,3,1,0,1,3 13,4,1,0,1,3,9 0.1,0.1,10 20000 saida 1 91

onde as duas primeiras sequências de números são padrões pré definidos, a terceira sequência de números é a probabilidade, o quarto número é a quantidade de repetições em cada probabilidade, saida é o nome do arquivo txt de saída, 1 é padrão e o ultimo valor é o mmc entre o primeiro número das duas primeiras sequências (7 e 13).

Na primeira ocasião é na chamada, após a primeira interação de um for de probabilidade, ou seja, na chamada passo 01.01.10 que quer dizer que inicie com 0.1, incremente em cada rodada 0,1 durante 10 vezes (vai de 10 a 100%). O 20000 é o número de repetições que serão executadas em cada probabilidade. Quando executo, as primeiras 20000 repetições com a probabilidade em 0.1 ocorrem corretamente e quando vai incrementar para probabilidade em 0.2 causa o erro de segmentation fault. Já tentei desalocar a memória utilizando free(pp) dentro deste for (linha 337) mas não funcionou e eu só desaloco a memória na linha 359.

Para remediar isso, mudei a chamada de forma manual, ou seja, a cada chamada eu passo um valor de probabilidade, assim ficou:  ./prog 7,3,1,0,1,3 13,4,1,0,1,3,9 0.1,0,1 20000 saida 1 91 que passo como probabilidade inicial 0.1, 0 de incremento e 1 única vez. Desta forma consegui fazer funcionar. Até que me deparei na segunda ocasião que é quando tenho um valor maior de mmc. Por exemplo:

./prog 133,12,1,0,9,10,12,26,30,67,74,82,109,114,120 183,14,1,0,12,19,20,22,43,60,71,76,85,89,115,121,168 0.1,0,1 20000 saida 1 24339

Ele executa algumas vezes e saí com segmentation fault. Já troquei vários tipos de int para double e nada.

Um detalhe é que para executar é necessário ter instalado a biblioteca LIBGSL (sudo apt-get install libgsl0-dev).

O código completo está em https://pastebin.com/vpMhPDP9

Como não tenho experiência em C++ e parte deste código foi me entregue pronto, só alterei nas funções genPP e na main.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...