
hrcerq
(usa Outra)
Enviado em 26/02/2018 - 14:55h
danielfendrich escreveu:
Boa tarde, tenho um programa feito em C++ com a biblioteca libmodbus, tenho um while onde esse mesmo fica chamando a função que le o IP, depois de um certo tempo funcionando aparece o erro acima. O que poderia ser?
Boa tarde.
Por permitir a manipulação de ponteiros e alocação dinâmica de memória, C++ exige uma atenção extra no uso desses recursos. A manipulação de ponteiros de forma equivocada pode causar esse tipo de erro.
Falhas de segmentação (segmentation faults) decorrem de tentativas de acesso ilegal a um espaço de memória. Isso pode acontecer quando o endereço apontado não existe ou quando é um endereço ao qual o programa não deve ter acesso. Claro que isso é apenas a causa mais imediata, mas a causa raiz deve ser investigada no programa. Geralmente isso decorre de erros de execução não previstos (bugs).
Pela maneira como você descreve o problema, tudo indica que há um estouro de buffer, ou seja, depois de percorrer um buffer onde os endereços são guardados, o programa alcança uma área que não foi reservada, causando esse erro. Claro que isso é uma suposição, e será necessário depurar o programa pra confirmar.
Para mais informações sobre falha de segmentação, vide:
https://pt.wikipedia.org/wiki/Falha_de_segmenta%C3%A7%C3%A3o
---
Atenciosamente,
Hugo Cerqueira