Le problème n'est pas lié à la possibilité d'allouer 2 Gio. Bien sûr que c'est faisable. Le problème vient du fait qu'allouer 2 Gio peut prendre un sacré bout de temps à l'exécution. Je te laisse le soin de le faire proprement:
#define TWO_GIGS 2UL * (1UL << 30)
int *array = malloc(TWO_GIGS);
for (size_t i = 0; i < TWO_GIGS; ++i)
array[i] = i; /* to force memory to be allocated */
foo(array);
Définis ensuite foo() quelque part dans une autre unité de compilation, pour être sûr que gcc ne va pas simplifier le code (ou compile avec -O0). Bref. Sur mon super core i7 au boulot, effectivement je risque d'aller très vite. Sur mon Core 2 de l'ancien boulot, ça va prendre un moment. Je le sais d'expérience.
[^] # Re: Bonne nouvelle
Posté par lasher . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.
#define TWO_GIGS 2UL * (1UL << 30)
int *array = malloc(TWO_GIGS);
for (size_t i = 0; i < TWO_GIGS; ++i)
array[i] = i; /* to force memory to be allocated */
foo(array);
Définis ensuite foo() quelque part dans une autre unité de compilation, pour être sûr que gcc ne va pas simplifier le code (ou compile avec -O0). Bref. Sur mon super core i7 au boulot, effectivement je risque d'aller très vite. Sur mon Core 2 de l'ancien boulot, ça va prendre un moment. Je le sais d'expérience.