1. 程式人生 > >4.2 例程的初始化與結束化

4.2 例程的初始化與結束化

  例程沒有專門用來初始化和結束化的內部函式或過程。
  例程初始化時進行的操作包括:

  • 生成傳值引數的備份,並替換原引數的傳入地址;
  • 在棧上為區域性變數分配空間,並初始化具有引用計數特徵的變數;
  • 為陣列和記錄呼叫初始化過程,初始化其中具有引用計數特徵的域(記錄)或元素(陣列)。

  例程初始化過程中不會有堆操作。例程的結束化時進行的操作包括:

  • 清除傳值引數的備份;
  • 按照呼叫約定傳出Result;
  • 清除區域性變數在棧上分配的空間,併為具有引用計數特徵的變數呼叫減少引用計數的內部例程。如果引用計數減至1以下,則釋放變數在堆上的記憶體佔用;
  • 為陣列和記錄呼叫結束化過程,以使其中的引用計數特徵的域(記錄)或元素(陣列),得到與區域性變數相類同的結束化操作。

  例程的初始化和結束化過程的具體操作,在如下章節中有更細節的描述:
  第2章第6節:引用一計數一寫複製與型別資訊;第3章第4節:例程入口引數及呼叫約定;第3章第6節:完全彙編例程與內嵌彙編例程;第4章第1節:變數的初始化與結束化。