<p>I have a byte array in memory, read from a file.  I would like to split the byte array at a certain point (index) without having to just create a new byte array and copy each byte at a time, increasing the in memory foot print of the operation. What I would like is something like this:</p>

<pre><code>byte[] largeBytes = [1,2,3,4,5,6,7,8,9];  
byte[] smallPortion;  
smallPortion = split(largeBytes, 3);  
</code></pre>

<p><code>smallPortion</code> would equal 1,2,3,4<br>
<code>largeBytes</code> would equal 5,6,7,8,9</p>

You can't. What you might want is keep a starting point and number of items; in essence, build iterators. If this is C++, you can just use
```
std::vector<int>
```
and use the built-in ones.
In C#, I'd build a small iterator class that holds start index, count and implements
```
IEnumerable<>
```
.