次のように、C# でネイティブ C++ dll を使用しています。
C++ 関数:
poly* f1(/*some input data*/);
double* f2(poly* p);
C# では、次のことを行っています。
(これは unsafe ブロックと fixed ブロックを適切に使用して行われているため、心配する必要はありません)
void* ptr = f1(/*input data*/);
double[] result = f2(ptr);
からデータを印刷するとf2
、一部のデータが破損し、ガベージ値が表示されます。そして、いくつかの値は正しいです。私が知りたいのは、それを void ポインターに保存するためptr
ですか? それともそれでいいのですか、理由は別のものですか?