__nogc
Dica
Este tópico se aplica somente à 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.
__nogc class-specifier
__nogc struct-specifier
__nogc interface-specifier
__nogc array-specifier
__nogc pointer-specifier
__nogc new
Comentários
A palavra-chave __nogc é 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 será __nogc.
Os objetos desse tipo são semelhantes aos objetos padrão C++ que são alocados do heap padrão C++ e não estão sujeitos às restrições de um objeto gerenciado.
A palavra-chave __nogc também é usada 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
A palavra-chave __nogc também pode ser aplicada a tipos de matriz e ponteiro.
Uma ponteiro gc não pode ser membro de uma classe __nogc. Consulte __value para saber as diretrizes para inserir um tipo de valor em uma classe __nogc.
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
}