c++ weak_ptr与shared_ptr的不同
所有权关系:shared_ptr具有共享所有权,多个shared_ptr可以共享同一块内存资源,当最后一个shared_ptr烧毁时,内存资源才会被释放;而weak_ptr不具有所有权,它只是对shared_ptr的视察,不会增加援用计数,也不会影响内存资源的释放。
风险:由于shared_ptr共享所有权,可能会致使循环援用的问题,即两个或多个shared_ptr相互援用,致使没法释放内存资源,引发内存泄漏。而weak_ptr可以解决循环援用的问题,它不会增加援用计数,只是视察shared_ptr的状态。
使用处景:shared_ptr适用于多个对象共享同一块内存资源的情况,例如在构建复杂的数据结构或对象之间存在依赖关系时;而weak_ptr适用于避免循环援用的情况,例如在使用视察者模式时。
总的来讲,shared_ptr适用于需要共享所有权的情况,而weak_ptr适用于避免循环援用的情况。在实际使用中,可以根据具体情况选择使用shared_ptr或weak_ptr。
tiktok粉丝购买:https://www.smmfensi.com/
TOP