Przepraszam, jeśli jest to gdzieś jednoznacznie odebrane, ale jestem nieco zdezorientowany przez dokumentację doładowania i artykuły, które czytałem online.pytanie dotyczące zadania z boost :: shared_ptr (kontra funkcja reset())
widzę, że mogę korzystać z funkcji reset(), aby zwolnić pamięć w shared_ptr (zakładając, że liczba referencyjna spadnie do zera), np
shared_ptr<int> x(new int(0));
x.reset(new int(1));
to wierzę, doprowadziłoby do powstania dwóch obiektów całkowitych, a pod koniec tych dwóch linii liczba całkowita równa zero zostanie usunięta z pamięci.
Ale co zrobić, jeśli używam następujący fragment kodu:
shared_ptr<int> x(new int(0));
x = shared_ptr<int>(new int(1));
Oczywiście teraz * x == 1 jest prawdziwe, ale oryginalny obiekt Integer (równa zero) zostaną usunięte z pamięci lub mieć Przeniosłem tę pamięć?
Wydaje mi się, że byłby to problem operatora przypisania zmniejszającego liczbę referencyjną shared_ptr, ale rzut oka na kod źródłowy nie wydaje mi się, aby to pytanie było dla mnie jasne. Mam nadzieję, że ktoś bardziej doświadczony lub kompetentny może mi pomóc. Z góry dziękuję.
Widziałem to, ale wtedy zobaczyłem również dodatkowe informacje, które mogły być w konflikcie. Dzięki za sprawdzenie zdrowia psychicznego. – RandomGuy