/* sparse.c - malloc MB, touch one page per 16 MB (no paging-space pressure). */ #include #include #include #include int main(int argc, char **argv) { long mb = atol(argv[1]), i; char *p = malloc(mb << 20); if (!p) { printf("malloc %ld MB: NULL errno %d\n", mb, errno); return 1; } for (i = 0; i < (mb << 20); i += 16 << 20) p[i] = 1; printf("malloc %ld MB: %p .. %p (sparse touch)\n", mb, (void*)p, (void*)(p + (mb<<20) - 1)); return 0; }