共用方式為


ref new 和 gcnew (C++ 元件擴充功能)

ref new 彙總關鍵字會配置型別的執行個體,這個型別會在物件變成無法存取時進行記憶體回收,並將控制代碼 (^) 傳回到所配置的物件。

所有執行階段

由 ref new 所配置之型別執行個體的記憶體會自動解除配置。

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

如需如何配置和解除配置原生 C++ 型別記憶體的詳細資訊,請參閱 new 和 delete 運算子

Windows 執行階段

使用 ref new 來配置存留期要自動管理之 Windows 執行階段物件的記憶體。物件會在其參考計數變成零時自動解除配置,而這個情況會在參考的複本超出範圍之後發生。如需詳細資訊,請參閱 Ref 類別與結構

te3ecsc8.collapse_all(zh-tw,VS.110).gif需求

編譯器選項:/ZW

Common Language Runtime

Managed 型別 (參考或實值型別) 的記憶體是透過 gcnew 配置,而藉由使用記憶體回收來解除配置。

te3ecsc8.collapse_all(zh-tw,VS.110).gif需求

編譯器選項:/clr

te3ecsc8.collapse_all(zh-tw,VS.110).gif範例

範例

下列範例使用 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

  

請參閱

概念

執行階段平台的元件擴充功能