很多人不清楚的堆和棧問題

2021-10-04 02:15:23 字數 723 閱讀 7453

1、簡介

(1)棧是為執行執行緒留出的記憶體空間

(2)通常用後進先出(lifo)的方式預留空間

(3) 從棧中釋放塊(free block)是指標的偏移

(4)每乙個執行緒都有乙個棧

(5)儲存在計算機ram中

2、優勢

(1)棧比堆要快,訪問模式使可以輕鬆的分配和重新分配記憶體(指標/整型只是進行簡單的遞增或者遞減運算),然而堆在分配和釋放的時候有更多的複雜的 bookkeeping 參與。

(2)在棧上的每個位元組頻繁的被復用也就意味著它可能對映到處理器快取中,所以很快

(3)在棧上建立變數的時候會擴充套件,並且會自動**

(4)在編譯之前精確的知道需要分配資料的大小並且不是太大的時候,可以使用棧

1、簡介

(1)堆(heap)是為動態分配預留的記憶體空間

(2)每乙個應用程式通常都只有乙個堆

(3)儲存在計算機ram中

2、特點

(1)在堆上的變數必須要手動釋放,不存在作用域的問題。資料可用 delete, delete 或者 free 來釋放

(2)執行期間不知道會需要多大的資料或者需要分配大量的記憶體的時候,建議使用堆

(3)資料項位置沒有固定的順序,可以以任何順序插入和刪除

(4)堆包含乙個鍊錶來維護已用和空閒的記憶體塊

網路對映 很多問題不清楚,暫時僅作參考

1.儲存共享路徑和密碼 操作過程網上很多。2.本人適用,作為參考 void cbsmessageprocess setconnect const char localname,const char remotename,const char username,const char password ...

linux開機啟動過程,很多人說的不太清楚的看看。

面試中經常遇到說,請簡要回答一下linux系統的開機啟動過程?載入bios 讀取mbr boot loader 載入核心 使用者層init依據inittab檔案來設定系統執行的等級 一般3或者5,3是多使用者命令列,5是介面 init程序執行rc.syninit 啟動核心模組 執行不同級別執行的指令...

近似演算法與K center問題的解釋不清楚筆記

注 本文作者也沒太搞懂k center演算法 因為存在np hard問題,沒有演算法能在多項式時間找出最優解。在設計演算法的時候要考慮三個問題 1.最優解 2.快速 3.全部情況 如果三個都考慮,可能沒法在多項式時間內完成,所以就考慮2和3,在多項式的時間內找到乙個解,這個解可能不是最優解,但也不會...