Why does MemoryStream.GetBuffer() always throw?
exception, getbuffer, memorystream, windows
Solution
Here is the documentation for `MemoryStream(byte[])` constructor that you're using. It specifically says:
This constructor does not expose the underlying stream. GetBuffer throws UnauthorizedAccessException.
You should use `MemoryStream(Byte[], Int32, Int32, Boolean, Boolean)` constructor instead, with `publiclyVisible = true`.
Problem
The following code will always throw UnuthorizedAccessException (MemoryStream's internal buffer cannot be accessed.) ``` byte[] buf1 = { 2, 3, 5, 7, 11 }; var ms = new MemoryStream(buf1); byte[] buf2 = ms.GetBuffer(); // exception will be thrown here ``` This is in a plain old console app and I'm running as an admin. I can't imagine a more privileged setting I could give this code. So why can't I get at this buffer? (And if nobody can, what's the point of the GetBuffer method?) The MSDN docs say To create a MemoryStream instance with a publicly visible buffer, use MemoryStream, MemoryStream(array[], Int32, Int32, Boolean, Boolean), or MemoryStream(Int32). Am I not doing that? P.S. I don't want to use ToArray() because that makes a copy.