On Thursday, 5 March 2015 at 16:19:09 UTC, Marc Schütz wrote:
On Thursday, 5 March 2015 at 15:20:47 UTC, monarch_dodra wrote:
On Monday, 23 February 2015 at 22:15:54 UTC, Walter Bright wrote:
private:
  E[] array;
  size_t start, end;
  int* count;

What is the point of keeping start/end? Aren't those baked into the array slice? Not storing start end means not having to do index arithmetic (minor), reducing struct size (always nice). But more importantly, it allows implicit (and conditional) bounds checking (awesome), which actually runs regardless anyways.

Or did I miss something?

`GC.free()` needs a pointer to the start of the allocated block; it will not release memory if it gets an interior pointer. But as far as I can see, one pointer that stores the original address should be enough.

Still, you shouldn't need "end", and bounds checking would "just
work".

Reply via email to