shared_ptr允許多個指標指向同乙個物件,unique_ptr獨佔所指向的物件,用make_shared函式分配動態記憶體,返回物件的shared_ptr.
程式使用動態記憶體的原因之一是需要在多個物件間共享資料, 自己直接管理記憶體的類與使用智慧型指標的類不同, 它們不能依賴類的物件拷貝、賦值和銷毀操作的任何預設定義.
week_ptr是一種不控制所指向物件生存期的智慧型指標,它指向由乙個shared_ptr管理的物件。不改變shared_ptr的引用計數。當建立乙個week_ptr時,要用乙個shared_ptr來初始化它。因為week_ptr物件可能為空,lock函式用來返回乙個指向物件的shared_ptr指標。
int main(int argc, char *args)
執行結果為
42
99999999990hi
hihihi11
21
使用標準庫的文字查詢程式:
#include #include #include #include #include #include #include using namespace std;
class queryresult;
class textquery ;
class queryresult
private:
string sought;
shared_ptr> lines;
shared_ptr> file;
};textquery::textquery(ifstream& is) : file(new vector)
}}queryresult textquery::query(const string &sought) const
ostream& printfile(ostream& os, const textquery& tq)
}ostream &print(ostream & os, const queryresult &qr)
return os;
}int main(int argc, char *args)
C Primer 第12章 動態記憶體
程式有3中記憶體分配方式,靜態記憶體用來儲存區域性static物件,類static資料成員以及定義在任何函式之外的物件,棧記憶體用來儲存定義在函式內的非static物件。靜態記憶體和棧記憶體中的物件由編譯器建立或銷毀。程式用堆來儲存動態分配的物件,動態物件必須顯示銷毀。動態記憶體與智慧型指標 用ne...
C primer 12章 動態記憶體
這一章,由於本身對c語言動態分配以及指標比較熟悉,所以看起來會很輕鬆的。int i pi1 i pi2 nullptr double pd new double 33 pd1 pd const ini pci new const int 12 delete i 編譯器發現i不是指標,產生編譯錯誤資訊...
c primer第十二章動態記憶體小結 12
第十二章 動態記憶體 1.動態記憶體 c 中,動態記憶體管理是通過一對運算子完成的 new和delete。c語言中通過malloc與free函式來實現先動態記憶體的分配與釋放,c 中new與delete的實現其實會呼叫malloc與free。由於 c 語言沒有自動記憶體 機制,每次 new 出來的記...