Является ли хорошей идеей передавать float[] как ref float в неуправляемый код?

Я хотел бы передать float[] методу C. Сигнатура C выглядит как:

EXTERN int process_raw(float *inBuffer, float *outBuffer);

в C #сигнатура:

public static extern int process_raw(ref float inBuffer, ref float outBuffer);

будет ли проблематично передать массивы с рефом первому члену:

process_raw(ref someArray[0], ref anotherArray[0])

спасибо!

РЕДАКТИРОВАТЬ :Конечно, важно знать, что код C делает с числами с плавающей запятой. :Он будет обрабатывать их как массивы, считывать значения из inBuffer и записывать значения в outBuffer. Как обсуждается ниже, вопрос заключается в том, будет ли вся память закреплена во время вызова PInvoke?

РЕДАКТИРОВАТЬ 2 :Еще один комментарий. Я выбрал ref float специально, потому что я также хотел делать такие вещи, как :

fixed(byte* outBuff = buffer)
{
    Process(ticks, ref aFloat, ref ((float*)outBuff)[0]);
}

. В этом случае это не должно быть проблемой, потому что указатель в любом случае фиксирован, но вопрос для нормального массива, как указано выше, остается.

7
задан thalm 18 April 2012 в 22:04
поделиться