codeblock 8.02
compilando con gcc 3.4.5 sotto Vista
ho fatto questo piccolo test che mi lascia dei dubbi:
1)perchè non è segnalato in debugcodice: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;
2) successivamente ho aggiunto:
stampa comunque 100 é giusto ??!!??codice:delete p_x; cout << *p_x >> endl;
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; }

Rispondi quotando