Czy potrzebne jest użycie delete
Ostatnio zmodyfikowano 2021-11-12 22:39
krystian123456 Temat założony przez niniejszego użytkownika |
Czy potrzebne jest użycie delete » 2021-11-12 21:49:23 Czy w tej sytuacji potrzebne jest użycie delete s->p przed delete s , czy wystarczy samo delete s ? #include <iostream>
using namespace std;
class First { };
class Second { public: First * p; Second() { p = new First(); } };
int main() { Second * s = new Second(); delete s->p; delete s; return 0; }
|
|
DejaVu |
» 2021-11-12 22:39:27 W C++ nie masz garbage collectora, więc każdą zaalokowaną pamięć musisz zwalniać. Jeżeli obiekt rezerwuje jakąś pamięć dynamicznie to w destruktorze tego obiektu powinieneś ją zwalniać. Użytkownik klasy/obiektu nie powinien zastanawiać się co trzeba zwolnić wewnątrz obiektu.
Jak chcesz pójść krok naprzód z automatycznym zwalnianiem pamięci to poczytaj sobie o std::shared_ptr/std::unique_ptr itp. |
|
« 1 » |