__nogc

Примечание

Этот раздел относится только к управляемым расширениям для C++ версии 1.Приведенный здесь синтаксис должен использоваться только для обслуживания кода версия 1.В новом синтаксисе нет необходимости явно отмечать тип как неуправляемый.

Явное объявление неуправляемого типа.

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

Заметки

Ключевое слово __nogc служит для явного указания того, что объект выделяется в стандартной куче C++. Это ключевое слово можно опустить. Если ключевое слово __gc или __nogc перед объявлением класса не указано, по умолчанию используется __nogc.

Объекты этого типа похожи на стандартные объекты C++ тем, что они выделяются из стандартной кучи C++ и не подвержены ограничениям управляемого объекта.

Ключевое слово __nogc используется также при явном выделении объекта типа __value в стандартной куче 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;
}

Примечание

Ключевое слово __nogc можно также применять для типов массива и указателя.

Указатель gc не может быть членом класса __nogc. Инструкции по внедрению типа значения в классе __nogc см. в разделе __value.

Пример

В следующем примере объявляется неуправляемый класс (X) и создается и изменяется экземпляр объекта.

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