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