1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Problema com estruturas

Discussão em 'Programação' iniciada por Koncaman, 28 de Maio de 2006. (Respostas: 6; Visualizações: 688)

  1. Koncaman

    Koncaman Utilizador Saloio

    Boas
    Bem, para um trabalho final de uma disciplina, estou a ter um pequeno problema.

    trata-se do seguinte, tenho uma estrutura declarada como

    typedef struct _no{
    struct mov *pt1;
    struct tab_disp *pt2;
    struct _no **tab;
    } No;

    oo que se passa é o seguinte, sempre que adiciono um campo à estrutura, por exemplo

    typedef struct _no{
    struct mov *pt1;
    struct tab_disp *pt2;
    struct _no **tab;
    int i;
    } No;

    o programa compila sem qualquer problema, mas, independentemente de usar ou não a nova variavel, na sua execução obtenho um segmentation fault.

    alguém me sabe dar uma dica sobre o que possa ser?

    desculpem ser um bocado vago no meio disto, mas por o codigo todo aqui não é nada viavel.
     
  2. bikeman

    bikeman Power Member

    O melhor que te posso aconselhar a fazer é a tentares prever o que vais pressisar sempre na estruruta e crias logo a apartida todos os campos da estrutura.
    Ao nivel de programaçao que estou nao vejo como seja possivel fazer isso,sem ser assim,eu pelo menos crio logo tudo a partida e so uso quando for nessesario.

    cumps
     
  3. Koncaman

    Koncaman Utilizador Saloio

    pois, mas este é um programa com uma complexidade bastante elevada, e eu tenho aumentado a complexidade gradualmente, como manda a regra.

    em todo o caso, isto so me acontece em algumas das estruturas do programa, em outras estruturas, não faz qualquer diferença. isto é que me atrofia completamente.
    é que basta-me apenas introduzir a nova variavel, não é preciso fazer mesmo mais nada, que o programa passa a dar erro.

    acham que pode ser ma gestão de memoria?
    é que o programa da-me erro numa linha que, ainda por cima, não tem nada a haver com o raio da estrutura :|

    mas amanhã vou falar com o prof.
    ainda assim, se se lembrarem de alguma coisa, digam. toda a ajuda é bem vinda.
     
  4. inginheiiro

    inginheiiro Power Member

    na minha opinião (que é algo cega, pois não vi o codigo) o erro que te aparece, não tem nada a ver com a estrutura que definis-te.
     
  5. bikeman

    bikeman Power Member

    O segmentation fault da-se quando o sistema tenta aceder a memoria que estava alocada mas que por algum motivo deixou de tar...digo so caso nao saibam,pk as vezes acontecia e nao sabia resolver,mas depois de saber o k era concretamente ja ajuda a dar com o problema.

    cumps
     
  6. Galbne_PT

    Galbne_PT Power Member

    Boas,

    Sem ver o codigo, é um pouco às cegas!, mas é provavel k acontece é k estejas a usar calloc , malloc ou o sizeof numa parte do codigo p o tamanho anterir à estrura e agr o tamanho da nova é maior...
    Axo eu... sem grandes certezas ( era preciso estudar o código ) ...
    faz debug, pode ser k ajude!!!

    Cumps
     
  7. Koncaman

    Koncaman Utilizador Saloio

    pois, como eu, e voces suspeitavamos, o problema estava relacionado com um "bug"na alocação de memoria.
    estava a fazer o free de um ponteiro que ainda precisava.
    o programa funcionava antes da alteração, mas o problema ja la estava.
    como alterei a estrutura, o tamanho que ela ocupou esmagou o espaço para a "sorte".
    agora ja esta resolvido. obrigado pela ajuda ;)

    o codigo é imenso. nào era viavel por aqui centenas de linhas de codigo.
    eu expus o problema na esperança que identificassem alguma causa comum, como foi o que acabou por acontecer ;)
     
    Última edição: 29 de Maio de 2006

Partilhar esta Página