我开始研究C ++ 11的智能指针,但没有看到std::weak_ptr
的有用用法。有人可以告诉我std::weak_ptr
什么时候有用/必需吗?
最佳答案
一个很好的例子是缓存。
对于最近访问的对象,您希望将其保留在内存中,因此请牢牢指向它们。您会定期扫描缓存并确定最近未访问过哪些对象。您无需将它们保留在内存中,因此可以摆脱强指针。
但是,如果该对象正在使用中,并且其他一些代码持有指向该对象的强大指针怎么办?如果缓存摆脱了指向对象的唯一指针,则它将再也找不到它。因此,高速缓存将微弱的指针指向需要查找的对象(如果它们恰好留在内存中)。
这正是弱指针的作用-如果对象仍然存在,它可以让您定位它,但是如果其他对象不需要它,则无法将其保留在对象周围。
关于c++ - 什么时候std::weak_ptr有用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17937951/