__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