将字节*传递给Stream.读取(byte[],int,int)

本文关键字:int byte 读取 字节 Stream | 更新日期: 2023-09-27 18:00:18

。NET函数流。Read()将字节[]作为参数。有没有一种方法可以让我传递一个堆叠的字节*?这将使我不必进行额外的堆分配,从而节省垃圾收集的时间。此函数很短,可重复调用。

将字节*传递给Stream.读取(byte[],int,int)

不,你不能。您需要先创建一个数组并将其复制到其中。另请参阅MSDN论坛上的此帖子。

除此之外:我不知道你的应用程序的上下文,但也许你可以使用静态分配的缓冲区?在多线程上下文中,您可以在TLS中分配缓冲区,如下所示:

class SomeDataProcessor
{
    [ThreadStatic]
    static byte[] _Buffer;
}

请注意,您需要小心初始化程序。另请参阅此处

我不相信你能,但如果你想简化转换。您可以使用:

System.Runtime.InteropServices.Marshal.Copy

接受非托管地址、大小、字节缓冲区等