C# 在c语言中处理非托管内存# 我在C语言中使用了原生C++ +DLL,像这样:

C# 在c语言中处理非托管内存# 我在C语言中使用了原生C++ +DLL,像这样:,c#,c++,void-pointers,native-code,unmanaged-memory,C#,C++,Void Pointers,Native Code,Unmanaged Memory,C++函数: poly* f1(/*some input data*/); double* f2(poly* p); 在c#中,我正在做: (这是通过适当地使用不安全和固定的块来完成的,所以不用担心) 现在,如果我从f2打印数据,我会得到一些损坏的数据,垃圾值。有些值是正确的。我想知道,是因为将指针保存在void pointerptr?或者这很好,原因是其他原因吗?我猜封送员无法自动将double*转换为double[],因为它不知道数组的长度,并且可能存在许多其他问题。你至少要给我们一个C+

C++函数:

poly* f1(/*some input data*/);
double* f2(poly* p);
在c#中,我正在做:

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


现在,如果我从
f2
打印数据,我会得到一些损坏的数据,垃圾值。有些值是正确的。我想知道,是因为将指针保存在void pointer
ptr
?或者这很好,原因是其他原因吗?

我猜封送员无法自动将double*转换为double[],因为它不知道数组的长度,并且可能存在许多其他问题。你至少要给我们一个C++中的头文件,在C语言中声明你的DLILLATION ExtEnter方法,然后我们可以深入挖掘:)/p> F2声明是什么样子的?什么样的数据在它里面传递和从中传递?你不能从C++代码中安全地调用这些函数,内存管理问题非常严重。当你试着从C#开始做的时候,它不会变得更好。
void* ptr  = f1(/*input data*/);
double[] result = f2(ptr);