I have an instance of Span<byte> which I would like to copy to unmanaged memory pointed by IntPtr. If I had a byte[], this would be an easy job, just call Marshal.Copy:
I know I can convert Span<byte> to byte[] by calling ToArray, but that would require additional allocation, which I am trying to avoid. Is there any clean, non-allocating (also not using unsafe if possible) way to copy contents of Span<byte> to unmanaged memory pointed by IntPtr?

Turning the IntPtr into a Span<byte> will allow copying the source span into the span representing the unmanaged buffer.
However, a Span<T> cannot be directly derived from an IntPtr, but rather requires turning the IntPtr into a
void*pointer first and then creating a Span<T> from that pointer:Creating a Span<T> this way requires
unsafecontext, unfortunately.