Middle
Έχει ένα shared_ptr μόνο έναν μετρητή αναφορών ή πολλούς;
sobes.tech AI
Απάντηση από AI
// shared_ptr χρησιμοποιεί έναν κοινό μετρητή αναφορών,
// που αποθηκεύεται στο μπλοκ ελέγχου.
// Αυτό το μπλοκ ελέγχου περιέχει επίσης πληροφορίες σχετικά με το delete του χρήστη (deleter)
// και τον allocator του χρήστη, αν έχουν δοθεί κατά τη δημιουργία του shared_ptr.
// Κάθε αντίγραφο του shared_ptr που δείχνει το ίδιο αντικείμενο,
// αναφέρεται σε αυτό το μοναδικό μπλοκ ελέγχου και αυξάνει/μειώνει
// τον κοινό μετρητή κατά την αντιγραφή/διαγραφή.
// Εκτός από τον κοινό μετρητή αναφορών για το shared_ptr,
// το μπλοκ ελέγχου περιέχει επίσης έναν μετρητή αδύναμων αναφορών (weak count)
// για τους αδύναμους δείκτες (weak_ptr) που δείχνουν στο ίδιο αντικείμενο.
// Έτσι, για κάθε αντικείμενο που διαχειρίζεται το shared_ptr,
// υπάρχει μόνο ένας ισχυρός μετρητής αναφορών (για shared_ptr) και ένας αδύναμος μετρητής αναφορών (για weak_ptr),
// αποθηκευμένοι σε ένα μόνο μπλοκ ελέγχου.