跳至內容

英文维基 | 中文维基 | 日文维基 | 草榴社区

基於堆棧的內存分配

維基百科,自由的百科全書

計算機中的堆棧電腦記憶體區域,其中以後進先出 (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).