1. 程式人生 > >關於DSP中堆heap和棧stack的理解

關於DSP中堆heap和棧stack的理解

之前一直不是很清楚堆和棧之間的區別,因為在windows下不是很注意區分它們。今天查了些資料,關於C6000DSP堆和棧有如下區別:

stack -

又稱系統棧(system stack),用於:

儲存函式呼叫後的返回地址;

給區域性變數分配儲存空間;

傳遞函式引數;

儲存臨時結果;

heap -

編譯器提供的執行時支援庫的一些函式(如malloc/calloc/realloc),允許執行時為變數動態分配儲存器。這些儲存器就放置在.system段的全域性池(global pool)或堆(heap)中。

這個動態儲存池的大小僅僅受限與系統中實際的儲存容量。

這2個選項都可以在project-build options的聯結器選項中設定

《TMS320C6000系列DSP程式設計工具與指南》P126

綜上,簡單比較堆和棧的區別是:堆是程式中動態申請記憶體的地方,棧是函式巢狀呼叫,中斷,任務切換時保護現場時儲存相關暫存器的地方。