今日报错系列:weak_ptr

报错系列尝试两天后发现,今天没错可报,但每天都有收获是没毛病的
那依然沿用《今日报错系列》专栏,分享点心得,也算加深印象

报错一、延迟时间

今日在研究相关延迟需求时,发现一个之前从未注意到的小问题:延迟问题。
这里只说一下sleep。
重点来了:
1、windows 下是Sleep函数(S大写) 单位:毫秒

// 头文件
#include <windows.h> 
// 例如:
Sleep(2000); // 表示延时2秒

2、Linux下是sleep函数(s小写) 单位:秒

// 头文件
#include <unistd.h> 
// 例如:
sleep(2); // 表示延时2秒

当知道后,延迟2秒,不禁感叹,需多读书!

报错二、弱指针 weak_ptr

智能指针,其中共享指针印象最深,今天遇到了weak_ptr,忽然感到有点面生,感觉翻出小本本突击一下
来一波局部复习,待时间充裕之时再将智能指针系列完整总结一遍!
由于只用到了lock函数,由于时间问题(其实其他的函数暂时也不清楚),此处只贴lock的笔记

注:该处参考了《You图碧》大佬的文章,特此声明。

lock函数作用:
检查weak_ptr所指向的对象是否存在
如果存在,那么这个lock就返回一个指向该对象的shared_ptr(指向强引用计数就会加1);
如果不存在,lock会返回一个空的shared_ptr

举个栗子:
在这里插入图片描述

    auto pi = make_shared<int> (120);
    weak_ptr<int> piw(pi);
    auto pi2 = piw.lock();
    if(pi2 != nullptr) {
    
    
        *pi2 = 12;
        cout << *pi2 << endl;
    } else{
    
    
         cout << "shared_ptr的内存空间,不存在" << endl;
    }
    //以上代码 :weak_ptr能判断所指向的对象是否存在

遗忘很正常,能在遗忘后及时复习是个十分珍贵的习惯!

在此真诚建议诸位尽可能的将过目不忘的技能点加满哦~

扫描二维码关注公众号,回复: 12452446 查看本文章

结束:

分享也是自己对问题再次加深理解的方式,可能不全面,但绝对有用,后面将不断完善~

猜你喜欢

转载自blog.csdn.net/hwx802746/article/details/111995499