codeblock 8.02
compilando con gcc 3.4.5 sotto Vista

ho fatto questo piccolo test che mi lascia dei dubbi:


1)
codice:
int x=50;
   
   int *p_x=NULL;
   
   p_x=new int(20);  //alloco memeoria x un intero ed assegno indirizzo a p_x ed inizializzo

   p_x=&x;  	     //non ho usato delete x liberare memoria prima di assegnare indirizzo   di x: non è un errore??

   *p_x=100;
perchè non è segnalato in debug


2) successivamente ho aggiunto:

codice:
   delete p_x;

   cout << *p_x >> endl;
stampa comunque 100 é giusto ??!!??



3) se uso delete vado in segmentation fault dopo alcune volte che si esegue ripetutamente la funzione, ne riporto sinteticamente il corpo:
codice:
 
  void InitCb () {

   int *Id=new int(0);

   ..
   ..	   
   
   *Id=4;
   
   while () {  //ciclo righe della tabella
      int *i=new int(0);				//segmentation fault
      while () { // ciclo colonne della riga
         SendDlgItemMessage();
         *i+=1;
      }
      delete i;
      SQLFetch()
   }

   delete Id;

   ..
   ..
   
   int *Item=new int(0);
   if() 
      *Item=SendDlgItemMessage();
   SendDlgItemMessage();

   delete Item;
  
  }