Ho notato una cosa:
prima di tutto posto il costruttore
Codice PHP:
Huge::Huge(int pippo) // Costruttore di default/conversione
{
int indice,ii;
lunghezza=0;
pointer=(int *) malloc(sizeof(int));
while(pippo!=0)
{
pointer=(int *) realloc(pointer,(lunghezza+1)*sizeof( int));
pointer[lunghezza]=pippo%10;
pippo/=10;
lunghezza++;
}
ii = lunghezza - 1;
for( indice = 0; indice < lunghezza / 2; indice++, ii--) //swap del vettore
{
pointer[indice] = pointer[indice] ^ pointer[ii];
pointer[ii] = pointer[indice] ^ pointer[ii];
pointer[indice] = pointer[indice] ^ pointer[ii];
}
}
prima della chiamata di Big=10000 il membro pointer ha un certo valore, tipo 03AA, dopo la chiamata Big=10000 ho notato che pointer ha un valore diverso da 03AA. Eppure mi aspetterei che questi valori siano identici,per lo meno prima della riga
pointer=(int *) malloc(sizeof(int));
visto che nella chiamata è coinvolto lo stesso oggetto.
Quando esco dalla funzione ho visto che il membro pointer assume il valore assegnato dalla chiamata pointer=(int *) malloc(sizeof(int)).
Tutto questo avviene a "Distruttore spento". Se attivo il distruttore, dopo la fine della chiamata Big=10000 il programma salta appunto al distruttore e mi fa perdere il vettore di interi puntato da pointer....

[EDIT]: forse il fatto del malfunzionamento risiede nel fatto che non ho ridefinito l'operatore =, possibile?