Может ли IntPtr быть преобразован в байтовый массив без использования Marshal.Copy?

Я хочу получить данные из указателя IntPtr в байтовый массив. Я могу использовать следующий код, чтобы сделать это:

IntPtr intPtr = GetBuff();
byte[] b = new byte[length];
Marshal.Copy(intPtr, b, 0, length);

Но приведенный выше код вызывает операцию копирования из IntPtr в байтовый массив. Это не хорошее решение, когда данные большие.

Есть ли способ привести IntPtr к байтовому массиву? Например, будет ли работать следующее:

byte[] b = (byte[])intPtr

Это устранит необходимость в операции копирования.

Также: как мы можем определить длину данных, на которые указывает IntPtr?

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

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