Compiler Error C3255

 

'value type' : cannot dynamically allocate this value type object on native heap

Instances of a value type (see Classes and Structs) that contain managed members can be created on the stack but not on the heap.

The following sample generates C3255:

// C3255.cpp  
// compile with: /clr  
using namespace System;  
value struct V {  
   Object^ o;  
};  
  
value struct V2 {  
   int i;  
};  
  
int main() {  
   V* pv = new V;   // C3255  
   V2* pv2 = new V2;  
   V v2;  
}  

Managed Extensions for C++

The following sample generates C3255:

// C3255b.cpp  
// compile with: /clr:oldSyntax  
#using <mscorlib.dll>  
using namespace System;  
  
__value struct V {  
   Object* o;  
};  
  
__value struct V2 {  
   int i;  
};  
  
int main() {  
   V* pv = __nogc new V;   // C3255  
   V2* pv2 = __nogc new V2;   // OK  
}  

Show: