例如,我有一个结构:
struct values { int value1; int value2; };
然后我初始化它:
struct values *datas = (struct values *) malloc(size * sizeof(struct values) );
并填补它。 因此,我需要将少量结构转换为托管,将其放入List,删除一个结构并将其转换回来。
基本上,我有很少的非托管结构,我需要删除一个.net然后从内存中删除它。
注意:抱歉我的英文不好!
答案 0 :(得分:0)
这是我自己的解决方案。 对于第一个我填充结构
for (int i = 0 ; i < size ; i++ )
{
(datas+i)->value1 = i;
(datas+i)->value2 = i;
}
之后,我创建了Class
,用于保存datas
public ref class Values
{
private:
int _value1;
int _value2;
public:
Values();
property int Value1
{
int get();
void set(int value);
}
property int Value2
{
int get();
void set(int value);
}
};
所以,我可以用我的struct
中的数据填充List
List<Values^>^ mValues = gcnew List<Values^>();
for (int i = 0 ; i < size ; i++ )
{
Values^ newValues = gcnew Values();
newValues->Value1 = (datas+i)->value1;
newValues->Value2 = (datas+i)->value2;
mValues->Add(newValues);
}
毕竟,我可以通过mValues->RemoveAt(1);
删除其中一项?清除内存free(datas);
并使用新大小重新创建结构
size = mValues->Count;
datas = (struct values *) malloc(size * sizeof(struct values) );
从列表中填写
for (int i = 0; i < size; i++)
{
Values^ curValue = mValues[i];
(datas+i)->value1 = curValue->Value1;
(datas+i)->value2 = curValue->Value1;
}
这就是全部,我希望它可以帮助别人!