Jump to content
Fórum Script Brasil
  • 0

Segmentation fault com valores elevados


Question

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 to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148681
    • Total Posts
      644509
×
×
  • Create New...