Freigeben über


__nogc

Hinweis

Dieses Thema gilt nur für Version 1 von Managed Extensions für C++.Diese Syntax sollte nur verwendet werden, um Code von Version 1 beizubehalten.In der neuen Syntax ist es nicht erforderlich, einen Typ explizit als nicht verwaltet zu kennzeichnen.

Deklariert explizit einen nicht verwalteten Typ.

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

Hinweise

Das __nogc-Schlüsselwort wird verwendet, um explizit anzugeben, dass ein Objekt auf dem Standard-C++-Heap zugewiesen ist. Dieses Schlüsselwort ist optional. Wenn Sie __gc oder __nogc nicht vor einer Klassendeklaration angeben, ist der Standardwert __nogc.

Objekte dieses Typs sind C++-Standardobjekten insofern ähnlich, als dass sie vom Standard-C++-Heap zugewiesen sind und nicht den Einschränkungen eines verwalteten Objekts unterliegen.

Das __nogc-Schlüsselwort wird auch verwendet, wenn ein Objekt vom Typ "__value" explizit auf dem Standard-C++-Heap zugewiesen ist:

// 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;
}

Hinweis

Das __nogc-Schlüsselwort kann auch auf Array- und Zeigertypen angewendet werden.

Ein gc-Zeiger kann kein Member einer __nogc-Klasse sein. Richtlinien zum Einbetten eines Werttyps in eine __nogc-Klasse finden Sie unter __value.

Beispiel

Im folgenden Beispiel wird eine nicht verwaltete Klasse deklariert (X) und ein Objekt instanziiert und geändert:

// 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
}