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

网站数据做面板分析诊断网站seo现状的方法

网站数据做面板分析,诊断网站seo现状的方法,东莞长安营销型网站建设,杭州网站建设seo优化营销制作目录 答题格式: 几个易错点 可能问法四: 问题分析: 问题解答: 上回文说到,weak_ptr的功能和区别,并且进行了分析,我们接着进行解答。 答题格式: int main() { std::we…

目录

答题格式:

几个易错点

可能问法四:

问题分析:

问题解答:


上回文说到,weak_ptr的功能和区别,并且进行了分析,我们接着进行解答。

答题格式:

int main()
{   
    std::weak_ptr<ListNode> wp;
    std::shared_ptr<ListNode> sp;

    {
        std::shared_ptr<ListNode> n1(new ListNode);
        wp = n1;
//虽然weak_ptr不支持直接管理资源,但是可以管理shared_ptr已经管理的空间,这边是直接拷贝了一个shared_ptr对象,也可以使用make_shared
        //weak_ptr会遇到引用失效的问题, 主要是因为引用对象被置空了,主要还是因为引用计数没有像shared_ptr那样及时更新的问题。然后其weak_ptr自己本身又没有析构函数无法及时释放
        cout << wp.expired() << endl;//expired判断会不会引用失效,如果失效了就是真的就会返回1,没有就会返回0
        n1->_data++;
        sp = wp.lock();
//lock的作用是放止引用消失,把wp的资源给跟他同生命周期的sp管理,防止其过期,因为shared_ptr一般不会出现引用失效的问题,所以这个lock就相当于讲weak_ptr提升为类型为shared_ptr的sp,这也说明了weak_ptr可以管理shared_ptr已经管理的资源相当于提升了。
    }
      cout << wp.expired() << endl;
//出了作用域n1销毁了,此时wp就指向了一个空的空间
                                   //就引用失效了,原本会输出1的,但是加上锁lock就不会了

    return 0;
}

所以结合上面代码答案如下:

上面提到的expired 和lock面试官没问就不必说了

几个易错点

1。这些智能指针在用的时候还是要加上头文件memory,这里你发现不加也没错主要是因为编译器隐式包含了。具体解释如下:

虽然VS对于某些语法的优化很厉害,但是这里绝对不会优化掉头文件的。所以还是带上比较好。

2。shared_ptr是不会出现引用失效的,因为它的引用计数是会变的,但是这里如果引用的是一个空的对象,也就是说shared_ptr为nullptr,那这里的引用计数就需要特殊处理的,实际是给0的,因为引用空的根本不需要管理。

3。weak_ptr是有引用计数的,属于弱引用,只是引用计数不会随着管理资源的改变而改变,也就是不增加引用计数。

可能问法四:

你知道什么是循环引用吗,怎么解决这种情况?

问题分析:

这个问题就是在考察shared_ptr的缺点已经weak_ptr的研发原因?属于背一背就可以了,最多就是将一个例子。

问题解答:

循环引用自然就是你引用着我,我又引用着你呗,你想释放资源,我引用着你,你得等我释放了才能释放,但是我想释放又被你引用着,这样绕来绕去就随都释放不了了。一下例子可做参考。

struct ListNode
{
    int _data;

    shared_ptr<ListNode> _next;
    shared_ptr<ListNode> _prev;
    ~ListNode()
    {
        cout << "~ListNode()" << endl;
    }
};

int main()
{
    // 循环引用 -- 内存泄露
    shared_ptr<ListNode> n1(new ListNode);
    shared_ptr<ListNode> n2(new ListNode);
    cout << n1.use_count() << endl;
    cout << n2.use_count() << endl;
    n1->_next = n2;
    n2->_prev = n1;
    cout << n1.use_count() << endl;
    cout << n2.use_count() << endl;
    //在循环的地方使用weak_ptr就不会出现这种问题
    //weak_ptr不支持管理资源,不支持RAII

    return 0;
}

可以看到引用计数正常增加了,结果无法正常析构。

下面解释一下为什么:

结论:照成这种原因的本质就是引用计数的正常增加导致内部循环的部分无法释放,所以解决问题的关键计数使得内部循环引用的部分的引用计数不会增加就可以了,这时weak_ptr不会增加引用计数的优势就体现了,只需要将链表内部循环的部分的管理的智能指针换成weak_ptr就可以了。

//weak_ptr<ListNode> _next;
//weak_ptr<ListNode> _prev;

http://www.ysxn.cn/news/2493.html

相关文章:

  • 学术网站怎么做seo的公司排名
  • php网站中水印怎么做上海网站建设开发
  • 网站开发销售怎么做坚决把快准严细实要求落实到位
  • 广东省做农业网站销售的公司爱站网的关键词是怎么来的
  • 极简风格wordpress主题网站优化推广公司排名
  • gustos wordpress主题搜索引擎优化的技巧有哪些
  • 专业网站开发公司竞价托管是啥意思
  • 做类似360手赚那样的网站百度最怕哪个部门去投诉
  • 关于做网站的调查问卷搜索引擎排行榜前十名
  • 百度站长社区2345网址导航设为主页
  • 餐馆效果图网站关键词优化骗局
  • 福田建网站公司深圳网站优化软件
  • 资源网站不好找了一个域名大概能卖多少钱
  • 做网站找模版好吗怎样下载优化大师
  • 全网霸屏推广营销系统seo优化排名营销
  • 高新技术企业网站怎么做seo营销培训咨询
  • 建设一个微商的网站徐州百度seo排名
  • 个人网站被黑了网络营销就是
  • 的网站建设短视频代运营方案策划书
  • 网站运营与管理期末考试答案电商关键词查询工具
  • 怎么建设好一个外贸购物网站靠谱seo外包定制
  • 网站建设文献英文长沙网站关键词排名
  • 北京网站设计网站设计公司价格太原百度网站快速排名
  • 哪一些网站使用vue做的搜索引擎seo推广
  • python做流量网站最简单的营销方案
  • 网站如何做seo推广方案惠州大亚湾经济技术开发区
  • 企业不开了网站备案吗网站查询域名ip
  • 网站设计站甘肃搜索引擎网络优化
  • 莆田做网站域名注册查询网站
  • 分销商城小程序seo每日