呼叫堆疊

呼叫堆疊 （ - { zh - cn: ， 港臺稱 “ 呼叫堆疊 ”; zh - hk: ， 大陸稱 「 調用堆棧 」; zh - tw: ， 中國稱 「 調用堆棧 」 } - ） 別稱有 ： 執行棧 （ execution stack ） 、 控制棧 （ control stack ） 、 運行時棧 （ run - time stack ） 與機器棧 （ machine stack ） ， 是電腦科學中存儲有關正在執行的子程式的訊息的堆疊 。 英文有時直接簡稱 “ 棧 ” （ the stack ） ， 但堆疊中不一定僅存儲子程式訊息 。 幾乎所有電腦程式都依賴於呼叫堆疊 ， 而高階語言一般將呼叫堆疊的細節隱藏至後臺 。 呼叫堆疊最經常被用於存放子程式的返回位址 。 在呼叫任何子程式時 ， 主程式都必須暫存子程式執行完畢後應該返回到的位址 。 因此 ， 如果被呼叫的子程式還要呼叫其他的子程式 ， 其自身的返回位址就必須存入呼叫堆疊 ， 在其自身執行完畢後再行取回 。 在遞迴程式中 ， 每一層次遞迴都必須在呼叫堆疊上增加一條位址 ， 因此如果程式出現無限遞迴 （ 或僅僅是過多的遞迴層次 ） ， 呼叫堆疊就會產生堆疊溢位 。