iagoac / mc202

Disciplina MC202 - Estruturas de Dados
GNU General Public License v3.0
17 stars 13 forks source link

Erro 139 no LAB03 #120

Closed alisonaran closed 3 years ago

alisonaran commented 4 years ago

Oi, boa noite! No lab 03 estou com erro 139. No susy, tive a seguinte mensagem: (tamanho máximo da pilha ou da memória dinâmica excedido, ou talvez apontador inválido (código 139)

Vi outro post sobre este assunto, mas não entendi se estou cometendo o mesmo erro. Eu declarei "novo" como sendo um "p_no" (struct para lista duplamente ligada) e fiz: novo = malloc(sizeof(No)); Isto estaria errado? Se sim, como devo declarar o novo? Poderiam dar uma olhada no código que fiz e me dar uma luz? Obrigado!

iagoac commented 4 years ago

@alisonaran você pode colocar exatamente as linhas de código de seu programa aqui?
Não deu pra entender exatamente o que você fez

alisonaran commented 4 years ago

Claro professor, obrigado! Não sabia se podia colocar rsrsrs. Ele compila mas dá o erro indicado acima. Aí está o código:

typedef struct No{
    int dado;
    struct No*ant;
    struct No*prox;
}No;

typedef struct No*p_no;

p_no criar_lista(){
    return NULL;
}

p_no novo;
novo = malloc(sizeof(No));
iagoac commented 4 years ago

@alisonaran era pra postar só o trecho do código, não o código inteiro 👎
De todo jeito, eu editei o seu código.

Provável que o erro está literalmente no seu malloc.
Você pode notar que novo é uma variável do tipo p_no. Entretanto, você está tentando alocar memória do tamanho da estrutura No, que é muito maior (pois ela possui um inteiro e dois apontadores).

alisonaran commented 4 years ago

Poxa, desculpe professor. Entendi errado sobre postar o código. Assim, entendi que devo mudar o trecho: novo = malloc(sizeof(No)); para _novo = malloc(sizeof(pno)); ? Muito obrigado!

Alison.

iagoac commented 4 years ago

@alisonaran isso faz muito sentido para mim.
Seu código funcionou com esta modificação?