On Tue, 16 Feb 2010, dsimcha wrote:

> I **HATE** this example because it's a classic example of extreme nitpicking. 
>  On
> most modern computers, (void*).sizeof == size_t.sizeof.  Furthermore, usually 
> half
> your address space is reserved for kernel use.  Therefore, this bug would only
> show up when you're searching an array of bytes **and** very close to 
> exhausting
> available address space (i.e. when you probably have bigger problems anyhow). 
>  I
> have intentionally written binary searches like this even though I'm aware of 
> this
> bug because it's more readable and efficient than doing it "right" and would 
> only
> fail in corner cases too extreme to be worth considering.

Actually, linux has used the 3:1 split for as long as I can recall.  That 
leads to easilly allowing this case to hit.  I've seen it hit in real 
world apps.  I agree that when you're playing in that neighborhood that 
you should consider moving to 64 bit apps, but there's downsides there 
too.  64bit addressing isn't a silver bullet,  unfortunatly.  Any app 
that's integer or pointer heavy in its data structures pays a big cost.

Later,
Brad

Reply via email to