我正在读斯科特·迈尔斯的"Effective C++“一书。有人提到,tr1::shared_ptr
和tr1::weak_ptr
的作用类似于内置指针,但它们记录了有多少tr1::shared_ptrs
指向一个对象。
这就是所谓的引用计数。这可以很好地防止非循环数据结构中的资源泄漏,但如果两个或更多对象包含tr1::shared_ptrs
,从而形成一个循环,则该循环可能会使彼此的引用计数保持在零以上,即使指向该循环的所有外部指针都已被销毁。
这就是tr1::weak_ptrs
的用武之地。
我的问题是循环数据结构是如何使引用计数超过零的。我亲切地请求一个示例C++程序。weak_ptrs
是如何解决问题的?(同样,请举例说明)。
https://stackoverflow.com/questions/4984381
复制相似问题