Nella mia funzione C++ main
, ad esempio, se avessi un puntatore a una variabile che utilizza la memoria heap (anziché la memoria di stack), questo viene automaticamente rilasciato dopo che l'applicazione è stata chiusa? Assumerei così.C'è un motivo per chiamare delete in C++ quando un programma sta per uscire comunque?
Anche così, è buona prassi eliminare sempre le allocazioni dell'heap anche se si pensa che non verranno mai utilizzate in una situazione in cui la memoria viene automaticamente rilasciata all'uscita?
Ad esempio, c'è qualche punto in questo?
int main(...)
{
A* a = new A();
a->DoSomething();
delete a;
return 0;
}
Stavo pensando forse nel caso mi refactoring (o qualcuno refactors altro) che il codice e lo mette in nessun'altra parte dell'applicazione, dove delete
è davvero neccecary.
Così come la risposta di Brian R. Bondy (che parla in modo specifico delle implicazioni in C++), Paul Tomblin ha anche un good answer to a C specific question, che parla anche del distruttore C++.
Il duplicato menzionato è su C, che manca alcune importanti informazioni sul distruttore che è un problema in C++. –
@Brian, la mia risposta al duplicato menziona anche i distruttori (ora). La mia sensazione che questo dovrebbe essere cancellato è ancora valida. –
Non sai cosa intendi per distruttore - per favore chiarisci. –