Compartilhar via


__nogc

 

Publicado: abril de 2016

Dica

Este tópico se aplica apenas a versão 1 de Managed Extensions for C++. Esta sintaxe só deve ser usada para manter o código da versão 1. Na nova sintaxe, você não precisa marcar explicitamente um tipo como não gerenciado.

Declara explicitamente um tipo não gerenciado.

Sintaxe

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

Comentários

O __nogc palavra-chave é usada para especificar explicitamente que um objeto é alocado no heap padrão C++. Essa palavra-chave é opcional. Se você não especificar __gc ou __nogc na frente de uma declaração de classe, o padrão é __nogc.

Objetos desse tipo são semelhantes aos objetos C++ padrão são alocados do heap C++ padrão e não estão sujeitos a restrições de um objeto gerenciado.

O __nogc palavra-chave também é usado quando um objeto de um tipo Value alocado explicitamente no heap padrão 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;
}

Dica

O __nogc palavra-chave também pode ser aplicado a tipos de matriz e ponteiro.

Um ponteiro gc não pode ser um membro de um __nogc classe. Consulte Value para obter diretrizes sobre a incorporação de um tipo de valor em uma __nogc classe.

Exemplo

No exemplo a seguir, uma classe não gerenciada é declarada (X) e um objeto é instanciado e modificado:

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