sambac
14-04-2004, 09:23
Devo realizare la classica funzione che scambia il comntenuto di due variabili.
Il problema è che questa due variabili sono due puntatori a strutture create tramite la new.
Vorrei sapere se la seguente implememtazione è corretta cioè non si hanno problemi quando ad esempio vado a fare la delete.
struct evento{..........};
typedef evento* puntEvento;
void scambia(puntEvento& a,puntEvento& b)
{
puntEvento c=a;
a=b;
b=c;
}
se faccio "delete a;" sono sicuro che mi viene cancellato l'oggetto puntato da a dopo scambia e non quello puntato al momento della creazione? Cioè, se faccio:
a=new evento;
b=new evento;
scambia(a,b);
delete a;
mi viene cancellato il nuovo oggetto puntato da a oppure quello vecchio (cioè quello che dopo la scambia è puntato da b)?
Il problema è che questa due variabili sono due puntatori a strutture create tramite la new.
Vorrei sapere se la seguente implememtazione è corretta cioè non si hanno problemi quando ad esempio vado a fare la delete.
struct evento{..........};
typedef evento* puntEvento;
void scambia(puntEvento& a,puntEvento& b)
{
puntEvento c=a;
a=b;
b=c;
}
se faccio "delete a;" sono sicuro che mi viene cancellato l'oggetto puntato da a dopo scambia e non quello puntato al momento della creazione? Cioè, se faccio:
a=new evento;
b=new evento;
scambia(a,b);
delete a;
mi viene cancellato il nuovo oggetto puntato da a oppure quello vecchio (cioè quello che dopo la scambia è puntato da b)?