2GBくらいまではできるはずなのですが
callocで確保できるだけ確保したら1.6GBしか確保できません

メモリは1バイト確保しようとしたら8バイトに丸められると見たので
8の倍数から確保できなくなったらマイナス8して再度確保という感じでしています

for(unSize=262144; 8<=unSize; unSize-=8) {
do {
calloc(unSize, 1);
} while(確保できる間);
}

確保部分のソースとしてはこんな感じです
実際はリスト構造を使用してそこに確保したポインタを指定しています
リスト構造自体のサイズを考慮しても2GB - 1.6GBの400MBには達しないのですが
どうすればプロセス毎の最大値2GBまで確保できるようになりますか?