Я использую родной DLL C++ в C#, как это:Работа с неуправляемой памяти в C#
C++ функции:
poly* f1(/*some input data*/);
double* f2(poly* p);
В C#, я делаю:
(Это делается с использованием небезопасных и фиксированных блоков надлежащим образом, так что не беспокойтесь о том, что)
void* ptr = f1(/*input data*/);
double[] result = f2(ptr);
Теперь если я печатаю данные f2
, я получаю некоторые данные поврежденные, значения мусора. И некоторые значения верны. Я хочу знать, это из-за сохранения этого в указателе void ptr
? Или это прекрасно, а причина - что-то еще?
Как выглядит объявление f2? Какие данные передаются и выходят из него? – Luaan
Вы также не можете безопасно вызывать эти функции из кода на C++, существует очень серьезная проблема управления памятью. Это не улучшается, когда вы пытаетесь сделать это с C#. –