2016-02-15 2 views
0

Я портирую библиотеку C++ на C#. Как преобразовать эту строку кода C++ в эквивалент C#?конвертировать C++ новое распределение float в C#

mpixels = new float[mwidth * mheight]; 

mpixel является float* поля, которое используется много раз в классе и код производительности критически Так что я скорее держать указатели и не использовать массивы.

Я попытался распределить неуправляемую кучу с помощью Marshal.AllocateHGlobal, но я не понимаю, как использовать полученный результат IntPtr для применения на поплавке *.

+0

выглядит как это может быть массив поплавки. –

+0

Да. Но код касается манипуляций с пикселями, и производительность здесь имеет первостепенное значение. Наличие указателя арифметики могло бы работать намного лучше, чем зубчатые массивы. –

+0

C# имеет небезопасный код ... –

ответ

1

Эквивалент C# код:

 IntPtr ptr = Marshal.AllocHGlobal(mwidth*mheight*sizeof (float)); 
     mpixels = (float*) ptr.ToPointer(); 
+0

Если вам нужно написать C#, как это, то почему бы не оставить код на C++? –

+1

Хорошо ... Стек разработки основан на C#, и у меня есть опыт работы на C#, но не на C++ :(И, прежде всего, я не могу просто использовать библиотеку C++, потому что он имеет логические ошибки, а производительность ужасная. переместите его на C# и оптимизируйте и частично перепишите код. –

Смежные вопросы