处理c#中的非托管内存

时间:2013-11-28 10:43:41

标签: c# c++ void-pointers native-code unmanaged-memory

我在c#中使用原生C ++ dll,如下所示:

C ++函数:

poly* f1(/*some input data*/);
double* f2(poly* p);

在c#中,我正在做:

(这是使用不安全和固定的块来适当完成的,所以不要担心)

void* ptr  = f1(/*input data*/);
double[] result = f2(ptr);

现在如果我从f2打印数据,我会得到一些数据损坏的垃圾值。有些值是正确的。我想知道,是否由于在void指针ptr中保存了它?或者那很好,理由是别的吗?

1 个答案:

答案 0 :(得分:0)

我猜测编组器无法自动将double *转换为double [],因为它不知道数组有多长,并且可能存在很多其他问题。你必须至少给我们提供C ++中的头文件,C#中DllImported extern方法的声明,然后我们可以深入研究这个:)

相关问题