Закрепление символа [] на вызове P / Invoke

У меня есть пул объектов буферов символов и передачи этого буфера при вызове P / Invoke. Нужно ли буферизовать булавку перед вызовом или нет?

Первый подход:

[DllImport("Name", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern void SomeMeth(char[] text, int size);

public static string CallSomeMeth()
{
    char[] buffer = CharBufferPool.Allocate();
    SomeMeth(buffer, 4095);
    string result = new string(buffer, 0, Array.IndexOf(buffer, '\0'));
    CharBufferPool.Free(buffer);
    return result;
}

Второй подход:

[DllImport("Name", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static unsafe extern void SomeMeth(char* text, int size);

public static unsafe string CallSomeMeth2()
{
    char[] buffer = CharBufferPool.Allocate();
    string result;
    fixed (char* buff = buffer)
    {
        SomeMeth(buff, 4095);
        result = new string(buffer, 0, Array.IndexOf(buffer, '\0'));
    }
    CharBufferPool.Free(buffer);
    return result;
}

Ответы на вопрос(1)

Ваш ответ на вопрос