新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

c++ weak_ptr与shared_ptr的不同

发布时间:2024-07-16 04:22:55

c++ weak_ptr与shared_ptr的不同

  1. 所有权关系:shared_ptr具有共享所有权,多个shared_ptr可以共享同一块内存资源,当最后一个shared_ptr烧毁时,内存资源才会被释放;而weak_ptr不具有所有权,它只是对shared_ptr的视察,不会增加援用计数,也不会影响内存资源的释放。

  2. 风险:由于shared_ptr共享所有权,可能会致使循环援用的问题,即两个或多个shared_ptr相互援用,致使没法释放内存资源,引发内存泄漏。而weak_ptr可以解决循环援用的问题,它不会增加援用计数,只是视察shared_ptr的状态。

  3. 使用处景:shared_ptr适用于多个对象共享同一块内存资源的情况,例如在构建复杂的数据结构或对象之间存在依赖关系时;而weak_ptr适用于避免循环援用的情况,例如在使用视察者模式时。

总的来讲,shared_ptr适用于需要共享所有权的情况,而weak_ptr适用于避免循环援用的情况。在实际使用中,可以根据具体情况选择使用shared_ptr或weak_ptr。

tiktok粉丝购买:https://www.smmfensi.com/