You are asking for 2.6GB of RAM (No, you aren't -- you are asking for 14GB on 64 bit... 2.6GB overflowed cutoff calculation on 32 bit). Apparently, Linux's heap is utilized enough that calloc() can't allocate that much at once.
This works fine on Mac OS X (both 32 and 64 bit) -- but just barely (and would likely fail on a different system w/different dyld shared cache & frameworks).
And, of course, it should work dandy under 64 bit on any system (even the 32 bit version with the bad calculation worked, but only coincidentally).
One more detail; in a "real world app", the largest contiguous allocation will be vastly reduced as the complexity and/or running time of the application increases. The more of the heap that is used, the less contiguous space there is to allocate.