Compiler Error C3255
'value type' : cannot dynamically allocate this value type object on native heap
Instances of a value type (see Classes and Structs (Managed)) 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
}