PpHD> Et quelque chose à base de mmap anonymes? Tu ne dépendrais pas de l'implémentation de malloc au moins. Sans oublier le bookkeeping.
Je me disais aussi que tu consommerais sans doute moins de mémoire en essayant d'allouer (MAXINT/2+1), puis quand ça marche plus tu divises par 2. Tu arrêtes la boucle quand i < 2^20 et t'as une bonne approximation au Mo près, en ayant réservé pas trop de blocs.
Voilà dans l'idée :
size = 2^63
total = 0
while size ≥ 2^20:
while allocate(size):
total = total + size
size = size / 2