智慧型指標和萬能指標

2021-08-07 18:36:48 字數 717 閱讀 3596

智慧型指標:

智慧型指標(smart pointer)是儲存指向動態分配(堆)物件指標的類。除了能夠在適當的時間自動刪除指向的物件外,他們的工作機制很像c++的內建指標。智慧型指標在面對異常的時候格外有用,因為他們能夠確保正確的銷毀動態分配的物件。他們也可以用於跟蹤被多使用者共享的動態分配物件。

智慧型指標的一種通用實現技術是使用引用計數(reference count)。智慧型指標類將乙個計數器與類指向的物件相關聯,引用計數跟蹤該類有多少個物件的指標指向同一物件,當增加乙個可以訪問該資源的引用時計數器加1,減少時計數器減1,當計數器的值減少到0時,就會自動釋放該資源。

萬能指標:

即void指標,因為void型指標可以儲存任何型別的指標,void指標賦值給其他型別的指標時都要進行轉換,void指標不能參與指標運算,除非進行轉換。可以用作函式的返回值,比如malloc函式的返回值就是void*,亦可以用作函式的引數,比如memcpy的引數,這也是它和strcpy不同的地方。

另外,為什麼void可以用來修飾指標而不能用來修飾其他的變數呢?因為所謂資料型別實際上是固定記憶體塊大小的別名,比如說int是4個位元組,double是8個位元組,那麼它們修飾變數的時候,記憶體知道給他們分配多少的記憶體,但是void修飾別的變數的時候就不知道了,所以會出錯,而對於指標來說,在32位下是4個位元組,在64位下是8個位元組,不受資料型別影響,所以可以用void修飾。

void指標 萬能指標

void指標 指標型別強制轉換,只是改變了指向物件記憶體大小,而位址沒有變化。指標有兩個屬性 指向變數 物件的位址和長度 但是指標只儲存位址,長度則取決於指標的型別 編譯器根據指標的型別從指標指向的位址向後定址 指標型別不同則定址範圍也不同,比如 int 從指定位址向後尋找4位元組作為變數的儲存單元...

1 5 萬能指標 id

id是一種資料型別,並且是一種動態資料型別 資料型別的用途 1.定義變數 2.作為函式的引數 3.作為函式的返回值 預設情況下所有的資料型別都是靜態資料型別 靜態資料型別的特點 在編譯時就知道變數的型別,知道變數中有哪些屬性和方法 在編譯的時候就可以訪問這些屬性和方法 並且如果是通過靜態資料型別定義...

智慧型指標 強弱智慧型指標

在平時編寫 的時候經常會用到new來開闢空間,而我們開闢出來的空間必須得手動去delete他,但是如果程式設計師忘記去手動釋放那邊會出現乙個麻煩的問題,記憶體洩漏!或者是一塊記憶體被多個函式同時使用時,如果其中乙個函式不知道還有其他人也在使用這塊記憶體而釋放掉的話同樣也會引起程式的崩潰。引起記憶體洩...