今日報錯系列:weak_ptr
阿新 • • 發佈:2020-12-31
報錯系列嘗試兩天後發現,今天沒錯可報,但每天都有收穫是沒毛病的
那依然沿用《今日報錯系列》專欄,分享點心得,也算加深印象
今日報錯記錄:
報錯一、延遲時間
今日在研究相關延遲需求時,發現一個之前從未注意到的小問題:延遲問題。
這裡只說一下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能判斷所指向的物件是否存在
遺忘很正常,能在遺忘後及時複習是個十分珍貴的習慣!
在此真誠建議諸位儘可能的將過目不忘的技能點加滿哦~
結束:
分享也是自己對問題再次加深理解的方式,可能不全面,但絕對有用,後面將不斷完善~