C primer 第十二章筆記 初稿

2021-08-01 02:41:23 字數 941 閱讀 5459

區域性static物件,類的static資料成員及定義在函式之外的變數,都儲存在靜態記憶體中;

函式內的非static物件儲存在棧中;

動態分配的物件儲存在堆中(執行時分配記憶體);

shared_ptr

注:

內建指標與智慧型指標不存在隱式轉換,必須直接初始化。

當使用get()方法時,很容易產生釋放物件空間的疏漏。

unique_ptr

注:使用release()時,必須儲存返回結果,否則容易造成記憶體洩漏。

weak_ptr

注:weak_ptr時常用來檢查shared_ptr指向物件是否存在,在獲取shared_ptr時應使用lock()方法。

auto參與動態分配初始化時,提供初始值的括號內必須僅有單個初始化器。

動態分配記憶體上限雖然很大,但是也有分配上限。達到分配上限時,丟擲bad_alloc異常。使用定位new可以避免該異常:

int *p = new (nothrow) int;

通過new操作獲取的物件,並非為陣列型別,而是陣列元素型別的指標。因此,不能對該指標呼叫全域性begin()和end(),也不能使用範圍for。

當使用new操作分配乙個長度為0的動態陣列時,可以將其作為尾後迭代器使用。

當使用new運算生成動態陣列,並用作shared_ptr的初始化時,必須提供刪除器(因為預設是刪除單個物件)。

allocator類

construct(p,args)

構造物件

destroy(p)

執行析構函式

為了讓allocator與標準庫中的其他容器一起工作,標準庫還提供了兩個伴隨演算法:

c primer第十二章讀書筆記

本章主要講解new運算子在各種情況下的使用注意事項。c 使用new和delete運算子來動態控制記憶體。一 關於靜態成員 1 靜態成員屬於類,不屬於物件,即在多個物件中只有乙個靜態成員物件副本。2 靜態資料成員在類中宣告,在包含類方法的檔案中初始化。但如果靜態成員是const整型型別或者列舉型別,則...

C Primer Plus 第十二章筆記

1.呼叫複製建構函式 當函式按值傳遞物件或函式返回物件時,都將使用複製建構函式。2.如果類中包含了使用new初始化的指標成員,應當定義乙個複製建構函式,以複製指向的資料,而不是指標,稱為深度賦值。複製的另一種形式只是複製指標值,僅淺淺地複製指標資訊,稱為淺複製。3.將已有的物件賦給另乙個物件時,將使...

第十二章學習筆記

塊裝置將資訊儲存在固定大小的塊中,每個塊都有自己的位址。對作業系統來說,塊裝置是以字元裝置的外觀展現的,雖然對這種字元裝置可以按照位元組為單位進行訪問,但是實際上到塊裝置上卻是以塊為單位 最小512byte,既乙個扇區 這之間的轉換是由作業系統來完成的。扇區 磁碟碟片上的扇形區域,邏輯化資料,方便管...