erik quanstrom wrote: > i don't think it means you have to allocate an extra byte. there's > no requirement that you may indirect the "one-past the end" address.
No, but (a) the arithmetic has to work properly, including relations like "p < q", and on some architectures merely loading a past-the-segment-end address into an address register can cause an invalid-address trap. Thus, the C implementation when it lays out the data objects in segments may have to make sure that the segment contains an extra unused byte at the end, just so its address will be valid.