Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

r.vinicius

Erro: double free or curruption

Recommended Posts

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á.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.