Share via


__nogc

 

發佈時間: 2016年4月

System_CAPS_note注意事項

本主題只適用於 Managed Extensions for C++ 第 1 版。 這個語法只可用於維護第 1 版的程式碼。 在新語法中,您不需要將類型明確標記為 Unmanaged。

明確宣告 Unmanaged 類型。

語法

__nogc 
class-specifier
__nogc 
struct-specifier
__nogc
interface-specifier
__nogc
array-specifier
__nogc
pointer-specifier
__nogc
new

備註

__nogc 關鍵字可用來明確指定將物件配置在標準 C++ 堆積上。 這個關鍵字為選擇項。 如果您未在類別宣告前面指定 __gc__nogc,則它會預設為 __nogc

這種類型的物件類似標準 C++ 物件,這類物件會從標準 C++ 堆積進行配置,而且不受 Managed 物件的限制影響。

__nogc 關鍵字也可在 __value 類型的物件明確配置在標準 C++ 堆積上時使用。

// keyword__nogc.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
__value struct V { 
   int i;
};
int main() {
   V * v = __nogc new V;
   v->i = 10;
   delete v;
}
System_CAPS_note注意事項

__nogc 關鍵字也可以套用至陣列和指標類型。

gc 指標不可以是 __nogc 類別的成員。 如需在 __nogc 類別中嵌入實值類型的方針,請參閱 __value

範例

下列範例會宣告 Unmanaged 類別 (X) 並且具現化及修改物件:

// keyword__nogc_2.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;

__nogc class X {
public:
   int i;
};

int main() {
   X* x;   // declares an unmanaged pointer of type X
   x = new X();   // creates unmanaged object of type X on the C++ heap
   Console::WriteLine(x->i);

   x->i = 4;   // modifies unmanaged object
   Console::WriteLine(x->i);

   delete x;   // call C++ delete operator to clean up resource
}
48378256 4