Sdílet prostřednictvím


__nogc

 

Publikováno: duben 2016

Poznámka

Toto téma se týká pouze verze 1 spravovaných rozšíření jazyka C++. Tato syntaxe by měla sloužit pouze k udržování kódu verze 1. V nové syntaxi není nutné explicitně označit typu jako nespravované.

Nespravovaný typ explicitně deklaruje.

Syntaxe

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

Poznámky

__nogc Klíčové slovo se používá k explicitně zadat, že objekt je přidělen na haldě standardní C++. Toto klíčové slovo je nepovinné. Pokud neurčíte __gc nebo __nogc před deklaraci třídy, bude výchozí __nogc.

Objekty tohoto typu jsou podobné standardními objekty C++, v tom, jsou přidělovány z haldy standardní C++ a nejsou vztahují omezení uvedená spravovaného objektu.

__nogc Klíčové slovo se také používá při objekt typu __value explicitně přidělení na haldě standardní 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;
}

Poznámka

__nogc Klíčové slovo lze použít také typu pole a ukazatele.

Ukazatel gc nemůže být členem __nogc třídy. Viz __value pokyny pro vložení typ hodnoty v __nogc třídy.

Příklad

V následujícím příkladu je deklarován nespravované třídy (X) a objekt je vytvořena instance a upravit:

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