Erro: double free or curruption
Eai galera.
Sempre que chamo mais de um método da minha class Conjunto, recebo o erro: Double free or curruption
void Conjunto::Intersecao(Lista A, Lista B){
Celula *aux;
aux = A.getSentinela();
while( aux->after != NULL )
{
aux = aux->after;
if(B.Pesquisa( aux->value)) Inserir(aux->value);
}
aux = B.getSentinela();
while( aux->after != NULL )
{
aux = aux->after;
if(A.Pesquisa( aux->value)) Inserir(aux->value);
}
cout<<endl<<"Intersecao"<<endl;
Imprimir();
delete aux;
}
void Conjunto::Diferenca(Lista A, Lista B){
Celula *tmp;
tmp = A.getSentinela();
while( tmp->after != NULL )
{
tmp = tmp->after;
if(!B.Pesquisa( tmp->value)) Inserir(tmp->value);
}
tmp = B.getSentinela();
while( tmp->after != NULL )
{
tmp = tmp->after;
if(!A.Pesquisa( tmp->value)) Inserir(tmp->value);
}
cout<<endl<<"Diferenca"<<endl;
Imprimir();
delete tmp;
}
main.cpp
int main()
{
Conjunto Result;
Conjunto Result2;
Lista A1, A2;
A1.Inserir(1);
A1.Inserir(2);
A1.Inserir(3);
A1.Inserir(4);
A2.Inserir(4);
A2.Inserir(6);
A2.Inserir(7);
Result.Intersecao(A1, A2);
Result2.Diferenca(A1, A2);
return 0;
}
Se eu chamar apenas Intersecao ou apenas Diferenca, não acontece erro algum, porém se chamar os dois, o erro acontece.
Alguem sabe o motivo.
Agradeco desde já.
Discussão (0)
Carregando comentários...