使用memcpy复制托管结构

时间:2010-04-01 11:48:30

标签: c++-cli memcpy

我在混合模式下工作(在一个程序集中管理C ++和C ++)。我处于这种情况。

ManagedStructure ^ managedStructure = gcnew ManagedStructure();
//here i set different properties of managedStructure 

然后我调用下面给出的“方法”并将其传递给“& managedStructure”

Method(void *ptrToStruct)
{
    ManagedStructure ^ managedStructure2 = gcnew ManagedStructure();
    memcpy(&managedStructure2 , ptrToStruct, sizeof(managedStructure2 ));
}

关于这种情况我有以下问题。

1)像这样使用memcpy是否安全?如果不是它实现相同功能的替代方案是什么? (我不能改变“方法”定义)

2)我没有释放任何内存,因为两个结构都被管理。好吗?

2 个答案:

答案 0 :(得分:1)

您可以考虑使用复制构造函数或类似的东西。查看this article,因为它解释了一些可能有用的内容 我会假设你的记忆模型没问题,因为它都是管理的。

答案 1 :(得分:1)

我不确定你可能需要在memcpy之前固定managedStructure2,查看pin_ptr<>的文档。如果它没有固定,GC可能会在你的memcpy中间的一个单独的线程上发生,导致间歇性的错误。