C 常見面試題 Day6

2022-09-09 16:09:33 字數 764 閱讀 5072

21、什麼是智慧型指標,智慧型指標的作用,有哪些以及實現原理?

智慧型指標是乙個類,這個類的建構函式中傳入乙個普通指標,析構函式中釋放傳入的指標。智慧型指標的類都是棧上的物件,所以黨函式(或程式)結束時會被自動釋放;

c++程式設計中使用堆記憶體是非常頻繁的操作,堆記憶體的申請和釋放都是由程式設計師自己管理,程式設計師自己管理記憶體可以提高程式效率,但是整體來說對堆記憶體的管理是麻煩的,c++11中引入了智慧型指標的概念,方便管理堆記憶體。使用普通指標,容易造成堆記憶體洩露(忘記釋放),二次釋放,程式發生異常時記憶體洩漏等問題,使用智慧型指標能夠更好的管理堆記憶體。

22、模板偏特化是什麼?

所謂的偏特化是指提供另乙份template定義式,而其本身仍為templatized;也就是說,針對template引數更進一步條件限制所設計出來的乙個特化版本。

23、堆和棧的區別?

資料結構:棧記憶體是由系統分配,系統釋放,以函式為單位進行棧記憶體分配,函式棧幀、區域性變數、形參變數都儲存在棧記憶體上;堆記憶體是由使用者自己分配的,c語言用malloc/free進行申請/釋放記憶體,c++使用new/delete進行申請/釋放記憶體;由於堆記憶體需要使用者管理,所以記憶體很容易造成洩露,而棧不會;棧的記憶體分配釋放速度很快,效率高,記憶體都是連續的,而堆的記憶體分配釋放效率低一些,記憶體不一定連續,容易產生記憶體碎片,但靈活性較高。

C 常見面試題

1.c中static有什麼作用 1 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,故使用static在不同的檔案中定義同名函式和同名變數,而不必擔心命名衝突。2 static的第二個作用是保持變數內容的持久。儲存在靜態資料區的變數會在程式剛開始執行時就...

C常見面試題

1.bool型別,值為true或flase 正確答案 bool flag if flag if flag 以下均為不良風格 if flag true if flag 1 if flag false if flag 0 2.char 3.int int x if x 0 if x 0 4.float ...

C 常見面試題

vector中這兩個屬性很容易弄混淆。size是當前vector容器真實占用的大小,也就是容器當前擁有多少個容器。capacity是指在發生realloc前能允許的最大元素數,即預分配的記憶體空間。當然,這兩個屬性分別對應兩個方法 resize 和reserve 使用resize 容器內的物件記憶體...