記憶體管理:框架配置
當函式呼叫時,在架構的配置會從已設定的「堆疊框架的名稱」。 堆疊框架是暫時保留引數給函式以及任何變數是定義區域的對函式的記憶體區域。 因為編譯器會自動將其空間框架變數通常稱為「自動」變數。
有兩個主要畫面格配置特性。 首先,當您定義區域變數時,即使它是大型陣列或資料結構,有足夠空間堆疊框架上配置保留整數變數。 其次,會在超出範圍時,框架變數自動刪除:
void MyFunction()
{
// Local object created on the stack
CString strName;
// Object goes out of scope and is deleted as function ends
}
對於區域函式變數,當函式結束,此範圍轉換發生,不過,框架變數的範圍小於函式可以使用巢狀括號。 框架變數的這個自動刪除是非常重要的。 在簡單的基本型別的情況下 (例如 int ) 或 byte,陣列或資料結構,自動刪除回收變數使用的記憶體。 因為變數超出的範圍,就無法繼續存取。 在 C++ 物件,然而,自動刪除流程更為複雜。
當物件定義為框架變數時,它的建構函式會自動叫用這個定義發生的點。 當物件超出範圍時,它的解構函式自動叫用,在物件的記憶體回收之前。 這個自動建構和解構非常方便得應手的,不過,您必須知道自動呼叫,特別是對解構函式。
配置在框架物件的主要優點是會自動刪除。 當您配置在框架物件時,您不必擔心會導致記憶體遺漏的忘記的物件。(如需記憶體遺漏的詳細資訊,請參閱本文 在 MFC 偵測記憶體遺漏)。框架配置的缺點是框架變數無法在其範圍之外使用。 在選取框架配置的另一個因素對堆積配置是由結構的,並使用堆積物件,而不是堆疊為儲存體通常最好是,因為堆疊空間通常是有限的。