ref new 和 gcnew (C++/CLI 和 C++/CX)
ref new 可彙總關鍵字,其配置當物件變成無法存取時回收之型別的執行個體,並將控制代碼 (^) 傳回配置的物件。
所有執行階段
ref new 所配置型別的執行個體記憶體會自動取消配置。
如果無法配置記憶體,ref new 作業會擲回 OutOfMemoryException
。
如需有關如何配置和取消配置記憶體給原生 C++ 類型的詳細資訊,請參閱 new 和 delete 運算子。
Windows 執行階段
使用 ref new,將記憶體配置給您想要自動管理其存留期的 Windows 執行階段物件。 當其參考計數歸零時 (參考的最後一個複本已離開範圍之後發生),會自動取消配置物件。 如需詳細資訊,請參閱 Ref 類別與結構。
需求
編譯器選項:/ZW
通用語言執行平台
受控型別 (參考或實值型別) 的記憶體是由 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