《C Primer》第12章 動態記憶體

2021-08-14 11:36:40 字數 1105 閱讀 7734

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 出來的記...