当前位置: 首页 > news >正文

代驾网站开发网站建设思企互联

代驾网站开发,网站建设思企互联,深圳谷歌seo推广,网站建设企业模板当使用std::shared_ptr时&#xff0c;循环引用可能会导致资源泄漏的问题。下面是一个简单的示例&#xff0c;展示了循环引用导致资源泄漏的情况&#xff1a; #include <iostream> #include <memory>class A; class B;class A { public:std::shared_ptr<B> b…

当使用std::shared_ptr时,循环引用可能会导致资源泄漏的问题。下面是一个简单的示例,展示了循环引用导致资源泄漏的情况:

#include <iostream>
#include <memory>class A;
class B;class A {
public:std::shared_ptr<B> b_ptr_;A() {std::cout << "A constructor" << std::endl;}~A() {std::cout << "A destructor" << std::endl;}
};class B {
public:std::shared_ptr<A> a_ptr_;B() {std::cout << "B constructor" << std::endl;}~B() {std::cout << "B destructor" << std::endl;}
};int main() {std::shared_ptr<A> a_ptr(new A());std::shared_ptr<B> b_ptr(new B());a_ptr->b_ptr_ = b_ptr;  // A持有B的shared_ptrb_ptr->a_ptr_ = a_ptr;  // B持有A的shared_ptrreturn 0;
}

在上述示例中,类A和类B相互持有对方的std::shared_ptr。这样就形成了循环引用,因为两个对象彼此引用对方的std::shared_ptr,导致引用计数永远不会变为0,资源无法正确释放。

main()函数结束时,a_ptrb_ptr超出了作用域,它们的析构函数被调用,但由于循环引用的存在,对象AB的析构函数不会被调用,资源无法被释放,从而导致资源泄漏。

为了避免循环引用导致的资源泄漏,可以使用std::weak_ptr来打破循环引用,如下所示:

#include <iostream>
#include <memory>class A;
class B;class A {
public:std::shared_ptr<B> b_ptr_;A() {std::cout << "A constructor" << std::endl;}~A() {std::cout << "A destructor" << std::endl;}
};class B {
public:std::weak_ptr<A> a_ptr_;B() {std::cout << "B constructor" << std::endl;}~B() {std::cout << "B destructor" << std::endl;}
};int main() {std::shared_ptr<A> a_ptr(new A());std::shared_ptr<B> b_ptr(new B());a_ptr->b_ptr_ = b_ptr;  // A持有B的shared_ptrb_ptr->a_ptr_ = a_ptr;  // B持有A的weak_ptrreturn 0;
}

在上述示例中,类B的成员变量a_ptr_使用std::weak_ptr来持有A的弱引用,这样不会增加A对象的引用计数。当A对象被释放时,std::weak_ptr会自动失效,不会影响资源的释放。这样就打破了循环引用,避免了资源泄漏的问题。

http://www.yayakq.cn/news/844561/

相关文章:

  • 企业为什么要建站台呢安卓开发需要什么技术
  • 织梦网网站建设seo网站排名优化案例
  • 网站和域名都注册怎么连接成网址网站都有服务器吗
  • 谈谈网站建设会有哪些问题如何做网络营销能成功呢
  • 企业网站建设实训总结顺企网吉安网站建设
  • 做海报创意网站怎么样上传网站资料
  • 常熟网站开发2022年最火的关键词
  • 导航网站备案手机如何制作软件app
  • 开发外包网站4a广告公司什么意思
  • 网站开发的前景dede网站源码 如何
  • 验证网站所有权智能建站网站
  • 极简wordpress模板seo关键词排名优化是什么
  • 云南网站seo外包网站网站怎么做的
  • 网站定制营销免费网站空间怎么办
  • 几度设计网站网站和网页的设计方法
  • 做网站必须租服务器吗西宁网站公司
  • 房产网站的全景图怎么做网络环境搭建
  • 申请免费网站公司自己建网站做app
  • 如果评价网站做的好不好seo网站推广服务
  • 自适应网站建设价格做网站所用的语言
  • 建立官方网站源码网站建设
  • 做网站外包工作怎么样网站建设的软件有哪些
  • 个人免费开发网站wordpress使用密码错误
  • 科普网站建设的支持力度请简述网络营销的特点
  • 温州中豪网站建设推广网商网站怎么做
  • 网站建设源码包网站建设的布局对网络推广的影响
  • 北京快三下载官方网站做电销有什么资料网站
  • 现在还做响应式网站吗样式表一般用于大型网站
  • vs用户登录注册网站建设代码tomcat做公司网站
  • 淄博建网站哪家好网站建设延期通知单