0

我在混合模式下工作(在一个程序集中管理 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)我没有释放任何内存,因为这两个结构都是托管的。好吗?

4

2 回答 2

1

您可以考虑使用复制构造函数或类似的东西。查看这篇文章,因为它解释了一些可能有用的东西。
我会假设您的内存模型没问题,因为它都是托管的。

于 2010-04-01T12:03:47.097 回答
1

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

于 2010-04-01T12:10:59.167 回答