1. 程式人生 > 其它 >今日報錯系列:weak_ptr

今日報錯系列:weak_ptr

技術標籤:日常報錯指標c++

報錯系列嘗試兩天後發現,今天沒錯可報,但每天都有收穫是沒毛病的
那依然沿用《今日報錯系列》專欄,分享點心得,也算加深印象

今日報錯記錄:

報錯一、延遲時間

今日在研究相關延遲需求時,發現一個之前從未注意到的小問題:延遲問題。
這裡只說一下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能判斷所指向的物件是否存在

遺忘很正常,能在遺忘後及時複習是個十分珍貴的習慣!

在此真誠建議諸位儘可能的將過目不忘的技能點加滿哦~

結束:

分享也是自己對問題再次加深理解的方式,可能不全面,但絕對有用,後面將不斷完善~