臨時記憶體位置

臨時記憶體位置即臨時對象或臨時變數所在的記憶體位置。

基本介紹

  • 中文名:臨時記憶體位置
  • 外文名:Temporary memory location
  • 類型:計算機科學
  • 學科:跨學科
  • 性質:記憶體位置
  • 對象:臨時對象或變數
介紹,臨時記憶體位置,

介紹

在C++中真正的臨時對象是看不見的,它們不出現在我們的原始碼中。建立一個沒有命名的非堆(non-heap)對象會產生臨時對象。這種未命名的對象通常在兩種條件下產生:為了使函式成功調用而進行隱式類型轉換和函式返回對象時。
臨時變數通常在函式參數傳遞發生類型轉換以及函式返回值時被創建。比如:
void uppercasify(const string& str){}int main(int argc, char* argv[]){ char subtleBookPlug[] = "Effective C++"; uppercasify(subtleBookPlug);  // 此處有類型轉換 return 1;}
函式uppercasify需要const string&類型的參數,而實參類型為char *,故編譯器會嘗試著進行類型轉換。此時一個string類型的臨時變數將被創建,並用subtleBookPlug來初始化對象,最後將臨時變數傳給函式uppercasify。

臨時記憶體位置

運算中的臨時對象顯然是棧內的,對於參數上的臨時對象,因為是直接push進去的,所以也在棧內。對於返回值上的臨時對象,函式為返回值預留了棧空間。new/malloc函式創建出來的對象則是在堆中。

相關詞條

熱門詞條

聯絡我們