Reads size bytes from the native memory block, starting at offset, and returns them as a new ByteArray.
if size or offset is negative.
if the requested range is out of bounds in the native memory block.