ref new 和 gcnew (C++/CLI 和 C++/CX)

ref new 可彙總關鍵字,其配置當物件變成無法存取時回收之型別的執行個體,並將控制代碼 (^) 傳回配置的物件。

所有執行階段

ref new 所配置型別的執行個體記憶體會自動取消配置。

如果無法配置記憶體,ref new 作業會擲回 OutOfMemoryException

如需有關如何配置和取消配置記憶體給原生 C++ 類型的詳細資訊,請參閱 new 和 delete 運算子

Windows 執行階段

使用 ref new,將記憶體配置給您想要自動管理其存留期的 Windows 執行階段物件。 當其參考計數歸零時 (參考的最後一個複本已離開範圍之後發生),會自動取消配置物件。 如需詳細資訊,請參閱 Ref 類別與結構

需求

編譯器選項:/ZW

Common Language Runtime

受控型別 (參考或實值型別) 的記憶體是由 gcnew 配置,並且是使用記憶體回收功能以取消配置。

需求

編譯器選項:/clr

範例

以下範例會使用 gcnew 配置訊息物件。

// mcppv2_gcnew_1.cpp
// compile with: /clr
ref struct Message {
   System::String^ sender;
   System::String^ receiver;
   System::String^ data;
};

int main() {
   Message^ h_Message  = gcnew Message;
  //...
}

以下範例會使用 gcnew 建立 boxed 實值型別,以便以類似參考類型的方法使用。

// example2.cpp : main project file.
// compile with /clr
using namespace System;
value class Boxed {
    public:
        int i;
};
int main()
{
    Boxed^ y = gcnew Boxed;
    y->i = 32;
    Console::WriteLine(y->i);
    return 0;
}
32

另請參閱

適用於.NET 和 UWP 的元件延伸模組