//
shared_ptr
p1; //儲存著乙個空指標
// make_shared(args)
shared_ptr
p3 = make_shared(42);
shared_ptr
p4 = make_shared(10, 'd');
//引用計數:拷貝,初始化,函式引數,函式返回值,計數+1 。銷毀計數-1
auto r = make_shared(42);
r = q; //q物件的引用計數+1,r指向物件的引用計數-1。所以,42被釋放
int *pi = new
int; //pi指向乙個動態分配、未初始化的無名物件。預設初始化
int *pi = new
int(1024); //值初始化
string *pi = new
string; //預設初始化為空字串
vector
*pv = new
vector
; //值初始化
int *pi = new
int(); //值初始化0
string *pi = new
string(); //值初始化為空字串
delete p;
shared_ptr
p1 = new
int(42); //error : explict
shared_ptr
p2(new
int(42));
shared_ptr p1(new
int(42));
int *q = p.get(); //使用q時注意,不要讓它管理的指標被釋放
p = new
int(1024);
p.reset(new
int(1024));
if(!p.unique())
p.reset(new
string(*p));
*p += newval;
void end_connection(connection *p)
connection c = connect(&d);
shared_ptrp(&c, end_connection); //當p被銷毀時,呼叫end_connection
unique_ptrp1;
unique_ptrp12(3);
p2(p1.release()); //p1 = null ,p2控制p1的記憶體物件
p2.reset(p1.release()); //p1 = null, p2釋放物件,並控制p1的物件
//不能拷貝的unique_ptr可以作為函式返回,進行拷貝
unique_ptrdecltype(end_connection)*>
p(&c, end_connection);
auto = = make_shared(42);
weak_ptr wp(p);
//由於物件可能不存在,不能使用wp直接訪問物件,必須呼叫lock。如果存在,則返回指向共享物件的指標
if(shared_ptr
np = wp.lock())
c primer 動態記憶體
在這裡提到的內容裡,均包含在標頭檔案 include裡面,主要涉及c 的記憶體管理問題,在做專案的時候,可能會遇到,僅僅只是個人筆記,如有錯誤,還請大神賜教。1.智慧型指標 指的是在程式呼叫完最後乙個智慧型指標指的物件,自動釋放記憶體單元。包含shared ptr,unique ptr,weak p...
c primer 學習筆記11 動態記憶體
書本411頁。練習12.6 編寫函式,返回乙個動態分配的int的vector。將此vector傳遞給另乙個函式,這個函式讀取標準輸入,將輸入的值儲存在vector元素中,再將vector傳遞給另乙個函式,列印輸入的值。記得在恰當的時候delete vector。include include usi...
c primer 動態記憶體學習小記
在做練習題12.7時,遇到乙個問題,如果這麼定義乙個shared ptr是有問題得,不能往裡面push back元素,如下 所示 auto create auto input shared ptr d return d 如果這樣建立了p之後 傳入到input函式中使用push back 就會出錯。正...