说我有一个c ++结构:
typedef struct CStruct {
char * data;
} CStruct;
假设我在C ++ / cli中的托管类中有一个指向C ++结构的指针,它有一个引用结构成员的属性:
public ref class ManagedClass
{
public:
CStruct * theStruct;
ManagedClass(CStruct * strucPtr){
this->theStruct = strucPtr;
}
property String ^ data {
String ^ get() {
return gcnew String(theStruct->data);
}
void set(String ^ val)
{
IntPtr marshalToCharStar = Marshal::StringToHGlobalAnsi(val);
char * strPtr = static_cast<char *>(marshalToCharStar.ToPointer());
delete theStruct->data;
theStruct->data = strPtr;
Marshal::FreeHGlobal(marshalToCharStar);
}
}
}
首先,编组是否正确完成?这里的垃圾收集器应该没问题吗?其次,使用属性获取/设置非托管对象是一个好主意吗?任何垮台?
现在我有一个类似于上述对象的对象,但是成员值正在消失/变成垃圾,我正试图消除可能的原因。
感谢帮助