1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#define MEGA (1024*1024)
#define MEGA_500 (500*MEGA)
#define MEGA_10 (10*MEGA)
int main(int argc,char *argv[])
{
char *m500[8]; // 4 Go de mémoire
int i,j;
for (i=0;;i++)
{
if ((m500[i] = malloc(MEGA_500)) == NULL)
break;
// Sans remplissage, la mémoire utilisée qui est affichée dans le
// moniteur système ne bouge pas (même si je sors de la boucle
// au bout du meme nombre d'iterations). Avec remplissage, j'assure
memset(m500[i],i,MEGA_500);
}
fprintf(stderr,"%d x 500 Moctets alloues\n",i);
fprintf(stderr,"echec pour les 500 Mo suivants\n");
for (i=0;;i++)
{
char *m10 = malloc(MEGA_10);
if (m10 == NULL) break;
memset(m10,'X',MEGA_10);
}
fprintf(stderr,"%d x 10 Mo alloués en plus\n",i);
// les blocs de 500Mo sont ils toujours dans le même état ?
for (i=0;i<8;i++)
if (m500[i])
{
fprintf(stderr,"verif bloc 500 Mo no %d\n",i);
for (j=0;j<MEGA_500;j++)
assert(m500[i][j] == i);
}
} |
Partager