Salve,
mi sto preparando per un esame e quindi non sono ancora molto esperta. Devo creare un programma rimuove da una lista tutti i valori pi� piccoli di un valore x e che li inserisca in un array dinamico. Ho scritto il programma e non mi da errori, ma quando lo mando in esecuzione con il mac mi si blocca e mi scrive "pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug", mentre con windows mi funziona correttamente e mi fa compilare.
Grazie in anticipo

Vi lascio il programma:

struct elemento
{
int valore;
elemento* succ;
};
typedef elemento* pelem;

void CreaLista(pelem &p, int n)
{
p=new elemento;
pelem p1=p;
for(int i=0; i<n;i++)
{
p1->succ=new elemento;
p1=p1->succ;
cout<<"Elemento "<<i<<": ";
cin>>p1->valore;
}
p1->succ=NULL;
}

void TrasfElementi (pelem &p, int n, int* &vett, int &c)
{
vett=new int[n];
int x;
cout<<"Inserire elemento da confrontare: ";
cin>>x;
pelem paux=new elemento;
paux->succ=p;
p=paux;

pelem prec=paux;
paux=paux->succ;
int i=0;
while(paux!=NULL)
{
if(paux->valore<x)
{
vett[i]=paux->valore;
prec->succ=paux->succ;
paux=prec;
delete paux;
i++;
c++;
}
else
{
prec=paux;
paux=paux->succ;
}
}
paux=p;
p=p->succ;
delete paux;
}

void StampaLista(pelem p)
{
cout<<"Gli elementi della lista sono: "<<endl;
while (p!=NULL)
{
cout<<p->valore<<" "<<endl;
p=p->succ;
}
}

void StampaVettore(int* vett, int n)
{
for(int i=0; i<n; i++)
cout<<"v["<<i<<"]: "<<vett[i]<<endl;
}

int main()
{
int n,c=0;
cout<<"Inserire il numero di valori contenuti nel vettore: ";
cin>>n;
int *p;
pelem l;
CreaLista(l,n);
StampaLista(l);
p=new int[n];
TrasfElementi(l,n,p,c);
StampaVettore(p,c);
return 0;
}