# 附錄A
## 術語表
這里列出了本書中用到的一些技術術語,在別的地方你也能找到它們,不過我想還是把它們集中一處,以便查找。
### 堆(內存)
堆表示程序可用的內存區,也叫動態內存區。堆內存的分配與釋放次序是隨機的,這就是說,如果你按次序分配三塊內存,那么到時并不按分配時的次序釋放內存。 堆管理器會負責所有操作,你只需簡單地使用GetMem 函數請求新內存或調用constructor 建立對象, Delphi 會返回一個新的內存塊(隨意重用已經丟棄的內存塊)。
堆是應用程序可用的三種內存區之一, 其它兩種分別是全局內存區(存放全程變量) 和棧。與堆相反,全程變量內存在程序啟動時就分配,然后一直保留到程序終止才釋放;棧的內容請詳見術語表。
Delphi 使用堆為對象、字符串、動態數組及特殊的動態內存請求(GetMem)內存分配。
Windows 應用程序的地址空間最大允許有 2 GigaByte, 其中大部分能被堆使用。
### 棧(內存)
棧表示程序可用的內存區,棧內存動態分配,并按特定次序分配、釋放。棧內存按后進先出次序(LIFO)分配,這表示最后分配的內存區先被釋放。棧內存一般在例程中使用(過程、函數及方法調用)。 當你調用例程時,例程參數及返回值是放在棧中的(除非使用Delphi缺省調用方式,對調用過程進行優化)。此外,例程中聲明的變量(在begin語句前的 var 塊中)也存放在棧中,所以當例程終止時,這些變量會被自動清除(在返回調用點之前以LIFO次序釋放)。
棧是應用程序可用的三種內存區之一,其它兩種分別是全局內存區和堆。堆的內容請詳見術語表。
Delphi 使用棧存放例程參數及其返回值(除非你使用Delphi缺省的 register 調用協定)、局部例程變量、Windows API 函數調用等等。
Windows 應用程序可以預留大量的棧內存,在 Delphi 中你可以通過工程選項的 linker 頁設置, 不過一般采用缺省設置就可以了。 如果你收到一個棧溢出錯誤信息,這可能是因為你的函數進入了死循環自調用,而不是棧空間太小。
### 其它
* Dynamic
* Static
* Virtual
* memory leak
* painting
* literal
* array
* API
* class reference
* class method
* parent
* owner
* self