Như tôi có thể thấy, con trỏ thông minh được sử dụng rộng rãi trong nhiều dự án C ++ trong thế giới thực.
Mặc dù một số loại con trỏ thông minh rõ ràng có lợi để hỗ trợ RAII và chuyển quyền sở hữu, nhưng cũng có một xu hướng sử dụng các con trỏ được chia sẻ theo mặc định , như một cách "thu gom rác" , để lập trình viên không phải suy nghĩ về việc phân bổ nhiều như vậy .
Tại sao các con trỏ chia sẻ phổ biến hơn việc tích hợp một trình thu gom rác thích hợp như Boehm GC ? (Hoặc bạn có đồng ý không, rằng chúng phổ biến hơn so với các GC thực tế?)
Tôi biết về hai lợi thế của các GC thông thường so với đếm tham chiếu:
- Các thuật toán GC thông thường không có vấn đề với các chu trình tham chiếu .
- Tổng số tham chiếu thường chậm hơn so với một GC thích hợp.
Các lý do để sử dụng con trỏ thông minh đếm tham chiếu là gì?
std::unique_ptr
là đủ và như vậy có chi phí không vượt quá con trỏ thô về hiệu suất thời gian chạy. Bằng cách sử dụngstd::shared_ptr
ở mọi nơi, bạn cũng sẽ che khuất ngữ nghĩa sở hữu, mất một trong những lợi ích chính của con trỏ thông minh ngoài quản lý tài nguyên tự động - hiểu rõ về ý định đằng sau mã.