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

顺德新网站制作关键词优化排名软件案例

顺德新网站制作,关键词优化排名软件案例,建设自己的网站怎么这么难,电子商务静态网站建设心得问题描述: 例如: 有个类A和类B,A类包含B类型的shared_ptr成员,B类包含A类型的shared_ptr成员。然后主函数各自创建A类的对象和B类的对象都被shared_ptr管理(引用计数为1)。然后对象之间相互引用时&#x…

问题描述:

例如:

  • 有个类A和类B,A类包含B类型的shared_ptr成员,B类包含A类型的shared_ptr成员。
  • 然后主函数各自创建A类的对象和B类的对象都被shared_ptr管理(引用计数为1)。
  • 然后对象之间相互引用时(引用计数为2),当主函数结束时,对象出作用域销毁后引用计数减1,最后为1,相互引用的引用计数不会归0,导致析构函数不会释放资源,造成内存泄漏。
class B;
class A {
public:std::shared_ptr<B> bPtr;
};
class B {
public:std::shared_ptr<A> aPtr;
};int main() {auto a = std::make_shared<A>();auto b = std::make_shared<B>();a->bPtr = b;b->aPtr = a;// 此时 a 和 b 的引用计数都至少为 1(来自自身的 shared_ptr 管理以及对方的引用),即使超出作用域,引用计数也不会归 0,内存无法释放return 0;
}

解决办法:

在相互引用时,使用weak_ptr就可以解决了,因为weak_ptr不会增加引用计数,只起到观察者的作用。

class B;
class A {
public:std::weak_ptr<B> bPtr; // 改为 weak_ptr
};
class B {
public:std::weak_ptr<A> aPtr; // 改为 weak_ptr
};int main() {auto a = std::make_shared<A>();auto b = std::make_shared<B>();a->bPtr = b;b->aPtr = a;// 当超出作用域时,a 和 b 的引用计数(主要来自 make_shared 创建时的计数)会正常减少,因为 weak_ptr 不增加计数,对象可以正确释放return 0;
}

ps:后续也会出一个share_ptr和weak_ptr底层的原理,帮助大家更深的理解智能指针。

具体应用:

那么循环引用在现实开发场景有什么应用呢,这里举一个游戏的例子帮助大家理解。

比如你有个角色类和装备类,当两个类对象相互引用时,表示角色装备该武器,武器的持有者是该角色,当你没有解决循环引用问题时,就会造成:角色死亡时,武器资源没有释放;武器的持有者已死亡还被持有,不符合游戏规则且内存泄漏。

class Equipment;
class Character {
public:std::string name;std::weak_ptr<Equipment> equippedWeapon;Character(const std::string& n) : name(n) {}
};class Equipment {
public:std::string type;std::weak_ptr<Character> owner;Equipment(const std::string& t) : type(t) {}
};int main() {auto warrior = std::make_shared<Character>("勇士");auto sword = std::make_shared<Equipment>("剑");warrior->equippedWeapon = sword;sword->owner = warrior;return 0;
}

http://www.hkea.cn/news/995768/

相关文章:

  • 做电影网站要买什么重庆seo网站哪家好
  • 广州北京网站建设公司网站外部优化的4大重点
  • 网站建设书优化大师是干什么的
  • 优秀的网站建设公司百度指数人群画像
  • wordpress企业中文模板太原seo哪家好
  • 广东网广东网站建设网站推广方案模板
  • 网站运营知识快手seo
  • 咖啡公司网站建设策划书微信营销方式
  • 柳江区城乡住房建设局网站上海seo优化服务公司
  • 西城企业网站建设企业网站怎么优化
  • 初学者做动态网站项目例子游戏特效培训机构排名
  • 汽车类网站搭建直链平台
  • 做网站遇到的困难总结网络营销软件代理
  • 做网站登录论坛外链代发
  • 东营专业网站建设公司排行青岛谷歌优化公司
  • 公众号和网站先做哪个口碑营销的形式
  • 长沙企业建网站费用关键词搜索推广排行榜
  • 怎么做网站端口代理沧州网络推广外包公司
  • php wordpress 目录seo课程培训机构
  • 常州网站建设方案优化引流app推广软件
  • 网络营销网站建设实训网络营销步骤
  • 网站都有后台吗百度竞价开户公司
  • 秭归网站建设网站seo优化心得
  • wordpress电影网站模板seo运营
  • 公司注册网上核名业务如何终止网站排名优化怎么做
  • 网站建设伍金手指下拉2网上推广平台
  • 沧州网站建设公司翼马爱情链接
  • 计算机学了出来干嘛免费优化推广网站的软件
  • 宁波网站建设优化湖南seo优化按天付费
  • 门户网站手机版google官网入口