.NET函数Stream.Read()将byte []作为参数。有没有办法可以传递stackalloc'd字节*?这将使我不必进行额外的堆分配,从而节省垃圾收集的时间。此功能很短,可以反复调用。
答案 0 :(得分:2)
不,你不能。您需要先创建一个数组并将其复制到那里。另请参阅this thread on MSDN forums。
除此之外:我不知道你的应用程序的上下文,但也许你可以使用静态分配的缓冲区?在多线程上下文中,您可以在TLS中分配缓冲区,如下所示:
class SomeDataProcessor
{
[ThreadStatic]
static byte[] _Buffer;
}
请注意,您需要注意初始化程序。另请参阅here
答案 1 :(得分:-1)
我不相信你可以,但如果你想简化转换。您可以使用:
System.Runtime.InteropServices.Marshal.Copy
接受非托管地址,大小,字节缓冲区等