Questions & answers (italian)

Precisazione su comando delete

Precisazione su comando delete

di SEBASTIANO MARRELLI -
Numero di risposte: 1

Buongiorno professore, 

a lezione si è detto che variabili dinamiche sono distrutte da un delete.
Volevo chiedere una precisazione riguardo questo, in particolare se quello che dico è corretto:

- Il delete distrugge la variabile puntata, ovvero ne dealloca la memoria, tuttavia la memoria deallocata potenzialmente è uguale a prima;

-il delete NON distrugge il puntatore ad essa associata, esso diventa un dangling pointer, che punta alla memoria deallocata;

-ciò che accade se si cerca di accedere a tale memoria in secondo momento tramite quel puntatore o se si cerca di dare un secondo delete, dipende dalla macchina: alcune lo fanno notare, altre producono un crash, altre ancora nel peggiore dei casi lo consentono. 

In riposta a SEBASTIANO MARRELLI

Ri: Precisazione su comando delete

di Paolo Ronchese -

Quello che dice e' corretto, preciso nel seguito:

- "... la memoria deallocata potenzialmente è uguale a prima": e' vero ma bisogna sottolineare "potenzialmente", non c'e' nulla che vieti che, a seguito del "delete" stesso, il contenuto della memoria venga modificato

- "il delete NON distrugge ... punta alla memoria deallocata": esatto, nulla da aggiungere o precisare

- "ciò che accade ...": dipende dalla macchina, ma in modo impredicibile, nel senso che due esecuzioni successive sulla stessa macchina potrebbero produrre comportmenti diversi


Saluti