ref new 和 gcnew (C++ 元件擴充功能)
ref new 彙總關鍵字會配置型別的執行個體,這個型別會在物件變成無法存取時進行記憶體回收,並將控制代碼 (^) 傳回到所配置的物件。
所有執行階段
由 ref new 所配置之型別執行個體的記憶體會自動解除配置。
如果 ref new 作業無法配置記憶體,就會擲回 OutOfMemoryException。
如需如何配置和解除配置原生 C++ 型別記憶體的詳細資訊,請參閱 new 和 delete 運算子。
Windows 執行階段
使用 ref new 來配置存留期要自動管理之 Windows 執行階段物件的記憶體。 物件會在其參考計數變成零時自動解除配置,而這個情況會在參考的複本超出範圍之後發生。 如需類別和結構的詳細資訊,請參閱 Ref classes and structs
需求
編譯器選項:/ZW
Common Language Runtime
Managed 型別 (參考或實值型別) 的記憶體是透過 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;
}
Output