Che cosa succede quando faccio qualcosa comeUtilizzando "nuove" più volte sullo stesso puntatore
int * ptr = new int;
*ptr = 5;
// ... do some stuff here
ptr = new int;
// ... reuse ptr to do some other stuff
al contrario di
int * ptr1 = new int;
*ptr1 = 5;
// ... do some stuff here
delete ptr1;
int * ptr2 = new int;
// ... use ptr2 now
????
La stessa cosa accade a livello hardware? In altre parole, nel primo caso, ptr = new int;
si sposta dalla precedente coppia puntatore/valore e cosa succede a quei vecchi valori? Vengono rimpiazzati, galleggiano da qualche parte, ecc.?
Se non si chiama "cancella", si ottiene una perdita di memoria (1 int). Utilizza gli idiomi C++ e std :: unique_ptr o std :: shared_ptr , quindi la memoria verrà rilasciata automaticamente. –
Robinson
Il primo esempio rilascia solo memoria. La memoria allocata per la prima chiamata a 'new' è persa –
@CharlesSalvia Ma cosa succede quando è" perso "? Che cosa succede al mio sistema operativo? –