基於堆疊的內存分配

計算機中的堆疊電腦記憶體區域,其中以後進先出 (LIFO)方式添加或刪除數據。

在大多數現代計算機系統中,每個線程都會被分配一定的內存區域,稱為堆疊。當一個函數執行時,它可能會將一些數據添加到棧頂;當函數準備停止執行時,它負責從堆疊中刪除該數據。線程的堆疊用於存儲調用者提供的返回地址的位置,以便讓返回語句返回到正確的位置。此外堆疊還會用於存儲當前活動函數的固定長度變量。程式設計師也可以使用堆疊來存儲可變長度的數據。

系統

編輯

許多類Unix系統以及Microsoft Windows都實現了一個名為alloca的函數,用於動態分配堆疊內存。[1][2]該函數早在UNIX/32V英語UNIX/32V(1978) 時就出現在Unix系統上,但不是ANSI C或任何可移植作業系統接口標準的一部分。

參考文獻

編輯
  1. ^ alloca(3) – Linux程式設計師手冊頁 – 庫函數(Library Functions)
  2. ^ Why is the use of alloca() not considered good practice?. stackoverflow.com. [2016-01-05]. (原始內容存檔於2021-12-14).