RAM的特點就是高速儲存。形象的說:堆疊是一種儲存部件,即資料的寫入跟讀出不需要提供地址,而是根據寫入的順序決定讀出的順序 ;
而在RAM中設定堆疊是為了儲存程式執行過程中的變數或資料的;提高程式碼的執行速率。
例如:現在有一個函式呼叫了一個子函式;那麼呼叫前的一些變數或資料就要放入堆疊中;當子函式執行完後又把變數或資料從中堆疊取出來。
但是你要注意堆和棧是兩種不同的資料結構;
堆(作業系統): 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由OS回收,分配方式倒是類似於連結串列。
棧(作業系統):由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧
堆(資料結構):堆可以被看成是一棵樹,如:堆排序
棧(資料結構):一種後進先出的的資料結構
棧就是一條流水線,而流水線中加工的就是方法的主要程式,在分配棧時,由於程式是自上而下順序執行,就將程式指令一條一條壓入棧中,就像流水線一樣。而堆上站著的就是工作人員,他們加工流水線中的商品,由程式設計師分配:何時加工,如何加工。而我們通常使用new運算子為物件在堆上分配記憶體(C#),堆上尋找物件的任務交給控制代碼,而棧中由棧指標管理
RAM的特點就是高速儲存。形象的說:堆疊是一種儲存部件,即資料的寫入跟讀出不需要提供地址,而是根據寫入的順序決定讀出的順序 ;
而在RAM中設定堆疊是為了儲存程式執行過程中的變數或資料的;提高程式碼的執行速率。
例如:現在有一個函式呼叫了一個子函式;那麼呼叫前的一些變數或資料就要放入堆疊中;當子函式執行完後又把變數或資料從中堆疊取出來。
但是你要注意堆和棧是兩種不同的資料結構;
堆(作業系統): 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由OS回收,分配方式倒是類似於連結串列。
棧(作業系統):由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧
堆(資料結構):堆可以被看成是一棵樹,如:堆排序
棧(資料結構):一種後進先出的的資料結構
棧就是一條流水線,而流水線中加工的就是方法的主要程式,在分配棧時,由於程式是自上而下順序執行,就將程式指令一條一條壓入棧中,就像流水線一樣。而堆上站著的就是工作人員,他們加工流水線中的商品,由程式設計師分配:何時加工,如何加工。而我們通常使用new運算子為物件在堆上分配記憶體(C#),堆上尋找物件的任務交給控制代碼,而棧中由棧指標管理