之前一直覺得變數(物件)的「生命期」和「作用域」只是兩種不同的表述,其在實質上是統一的:若變數的作用域是全域性的,那麼其生命期也是從建立時直到程式結束;若變數的作用域是函式區域性的,那麼其生命期就是從建立到函式呼叫結束。而之前對於「static」保留字的理解也是:將生命期延長了,同時將作用域擴大了(因為我之前一直誤以為作用域和生命期的變化是正相關的)
直到看到《c++ primer》(第4版p200)中7.5.2節關於」靜態區域性變數」,知道:」當函式中的變數定義為static時,該變數的作用域不變,仍然處於函式作用域中;而其生命週期延長了,跨越這個函式的多次呼叫,直至函式結束。「其示例**如下:
size_t count_calls()
int main()
return
0;}
其中注釋掉的部分出錯,從中可以看出ctr的生命期延長了,但作用域仍處於count_calls函式中。 執行緒安全的物件生命期管理
1.當析構函式遇到多執行緒 在即將析構乙個物件時,別的執行緒是否正在執行該物件的成員函式?如何保證在執行成員函式期間,物件不在另乙個執行緒被析構?在呼叫某個成員函式之前,如何確保物件還活著?析構函式會不會執行到一半?1.1執行緒安全類 多個執行緒同時訪問,表現出正確的行為 無論作業系統如何排程這些執...
muduo 執行緒安全的物件生命期管理
六 系統地避免各種指標錯誤 七 shared ptr 技術與陷阱 八 小結 當乙個物件能被多個執行緒同時看到時,那麼物件的銷毀時機就會變得模糊不清,可能出現多種競態條件 race condition 解決這些race condition是 c 多執行緒程式設計面臨的基本問題。本文試圖以shared ...
執行緒安全的物件生命期管理(三)
c 裡可能出現的記憶體問題大致有這麼幾個方面 1 緩衝區溢位 2 空懸指標 野指標 3 重複釋放 4 記憶體洩漏 5 不配對的new delete 6 記憶體碎片 正確使用智慧型指標能很容易地解決前面5個問題。1 緩衝區溢位 用vector string或自己編寫buffer class來管理緩衝區...