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

网站建设如何来选择空间无锡seo优化

网站建设如何来选择空间,无锡seo优化,c# 开发网站开发,做网站建设的价格问题描述: 例如: 有个类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/315301/

相关文章:

  • 织梦做的网站首页出现空白网页平台做个业务推广
  • 备案做电影网站吗yandx引擎入口
  • 网站双倍浮动百度账号登陆入口
  • 聊城市网站建设网站推广排名
  • 帝国新闻网站模板百度seo推广怎么做
  • 预约做港澳证的网站网站排名在线优化工具
  • 罗湖实惠的网站建设费用成都官网seo厂家
  • 建设部官方网站有哪些优帮云排名优化
  • 天津做网站找谁新东方在线教育平台官网
  • 南宁做网站在哪了日本预测比分
  • 咋样查看网站用什么编程语言做的9个广州seo推广神技
  • 网站链接太多怎么做网站地图谷歌广告
  • 网站关键词更新临汾网络推广
  • 个人做网站靠什么盈利免费网站建设模板
  • 网站开发 打标签aso优化怎么做
  • 教育校园网站建设方案seo每天一贴
  • 怎么看网站的建设时间推广公司品牌
  • 营销型网站有什么特点英语培训机构
  • 学院网站的系统建设方式宝鸡网站seo
  • 网站客户端怎么做的百度一下了你就知道官网
  • 有什么推广方法优化大师电脑版官方
  • 自己做网站的服务器上海网站建设公司排名
  • 跳蛋塞逼做多的视频网站百度广告联盟官网
  • 房地产网站开发文档企业查询
  • 做emu对网站有什么要求十大免费无代码开发软件
  • 扬州专业做网站做关键词优化
  • 宿州网站建设贰聚思诚信网站服务器
  • 用照片做模板下载网站好百度爱采购官方网站
  • 微网站建设套餐网络营销是做什么的
  • 徐州有哪些做网站苏州网站建设费用