gpt4 book ai didi

windows - 为什么 MemoryStream.GetBuffer() 总是抛出?

转载 作者:可可西里 更新时间:2023-11-01 12:19:59 32 4
gpt4 key购买 nike

下面的代码总是会抛出UnnuthorizedAccessException(无法访问MemoryStream的内部缓冲区。)

byte[] buf1 = { 2, 3, 5, 7, 11 };
var ms = new MemoryStream(buf1);
byte[] buf2 = ms.GetBuffer(); // exception will be thrown here

这是在一个普通的旧控制台应用程序中,我以管理员身份运行。我无法想象我可以提供此代码的更特权设置。那么为什么我不能进入这个缓冲区呢? (如果没有人可以,那么 GetBuffer 方法的意义何在?)

MSDN 文档说

To create a MemoryStream instance with a publicly visible buffer, use MemoryStream, MemoryStream(array[], Int32, Int32, Boolean, Boolean), or MemoryStream(Int32).

我没有这样做吗?

附言我不想使用 ToArray(),因为它会生成副本。

最佳答案

Here是您正在使用的 MemoryStream(byte[]) 构造函数的文档。它具体说:

This constructor does not expose the underlying stream. GetBuffer throws UnauthorizedAccessException.

你应该使用 this构造函数,使用 publiclyVisible = true

关于windows - 为什么 MemoryStream.GetBuffer() 总是抛出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646193/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com