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 0indice lunghezza 2indice++, 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?