W mojej funkcji C++ main
, na przykład, gdy miałem wskaźnik do zmiennej, która używa pamięci sterty (w przeciwieństwie do pamięci stosu) - czy jest ona automatycznie deallocated po wyjściu mojej aplikacji? Zakładam, że tak.Czy istnieje powód, aby wywoływać usuwanie w C++, gdy program jest mimo to zamykany?
Mimo to, czy dobrą praktyką jest zawsze usuwanie przydziałów sterty, nawet jeśli uważasz, że nigdy nie zostaną użyte w sytuacji, gdy pamięć zostanie automatycznie zwolniona przy wyjściu?
Czy na przykład ma to jakiś sens?
int main(...)
{
A* a = new A();
a->DoSomething();
delete a;
return 0;
}
Myślałam być może w przypadku I byłaby (lub ktoś inny refactors) ten kod i umieszcza go w innym miejscu aplikacji, gdzie delete
jest naprawdę neccecary.
Oprócz odpowiedzi Briana R. Bondy (która mówi konkretnie o implikacjach w C++), Paul Tomblin ma także good answer to a C specific question, który również mówi o destruktorze C++.
Wspomniany duplikat dotyczy języka C, który pomija niektóre ważne informacje na temat destruktora, który jest problemem w C++. –
@Brian, moja odpowiedź na duplikat wspomina również destruktory (teraz). Moje poczucie, że ten powinien zostać usunięty, wciąż stoi. –
Nie wiesz, co masz na myśli, mówiąc o destruktorze - proszę wyjaśnij. –