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;
}