fiz o código abaixo de uma lista duplamente encadeada e acontece o seguinte problema no linux o programa roda perfeitamente. No windows o código dá erro na execução, descobri que o erro acontece quando vou inserir um terceiro elemento na lista. o que seria??   #include <stdio.h> #include <stdlib.h>  typedef struct List_dupla{ 	int h; 	struct List_dupla* ant; 	struct List_dupla* pro; } *list;  //----------------Construtoras  list Nil(void){return NULL;}  list Cons (int e, list I){ 	list aux = (list)malloc(sizeof(list));  	aux->h = e; 	if (!I){ 		aux->ant=Nil(); 		aux->pro=Nil(); 	} 	else{ 		aux->ant=I->ant; 		aux->pro=I; 		I->ant=aux; 	} 	return aux;	 }  //----------------acesssoras  int head(list l){ return (int)l->h ;}  list proximo (list l){	return l->pro; }  list anterior (list l){	return l->ant; }  int list_empty(list l){	return l==Nil() ;}  // ---------- extras   list insert_at(int pos, int x,list l){  	list aux; 	int cont=1;  	aux=l; 	 	if(pos<=0) 		return Cons(x,l); 	 	while((cont<pos) && aux->pro!=Nil()){ 		aux = aux->pro; 		cont++; 	} 	 	aux->pro=Cons(x,aux->pro);  	return l; 	 }  list list_remove(int x, list l){ 	list aux=l; 	 	if (list_empty(l)||(x==head(l)&&(l->ant==l->pro)))	// caso lista seja vazia 		return Nil();				// caso a lista tenha apenas 1 elemento;  	while ( head(aux) != x) { 		if (aux==Nil())		//não encontrou o elemento retorna a propria lista sem auteração; 			return l; 		aux = proximo(aux); 	} 	if (anterior(aux))	{	// se existir um anterior a aux 		anterior(aux)->pro=aux->pro;	} 		 	if (proximo(aux)){		// se existir um proximo a aux 		aux=proximo(aux); 		aux->ant=(anterior(aux))->ant; 		} 	if (x==head(l)) 		return proximo(l); 	return l;	 }  void show(list l){ 	 	list aux=l; 	 	if (list_empty(l)) 			return ;	 	do{ 		printf(" %d-",head(aux)); 		aux=proximo(aux); 	}while(aux!=Nil()); 	 	 }  int main(){ 	 	list c=Nil(); 	 	show©; 	c=Cons(60,c);	 	c=Cons(50,c); 	c=Cons(40,c); 	c=Cons(30,c); 	c=Cons(20,c); 	c=Cons(10,c); 	 	show©; 	 	c=list_remove(10,c); 	printf("\nMostra de novo"); 	show©; 	 	c=insert_at(1,5,c); 	printf("\nMostra de novo"); 	show©; 	 	return 0; }