#include #include #include #include #include int main(int argc, char* argv[]) { uint64_t nr_mb; uintptr_t i; unsigned char* volatile c; char* endptr; if ((argc != 2) || (*argv[1] == '\0')) exit(1); errno = 0; nr_mb = strtoull(argv[1], &endptr, 0); if ((argv[1] == endptr) || (errno == ERANGE)) exit(1); if (nr_mb > (SIZE_MAX >> 20)) exit(1); if ((c = malloc(nr_mb << 20)) == NULL) { fprintf(stderr, "malloc: %.100s\n", strerror(errno)); exit(1); } for (i = 0; i < nr_mb; i++) { memset(c + (i<<20), 42, 1 << 20); fprintf(stderr, "X"); } for (i = 0; i < nr_mb; i++) { memset(c + (i<<20), 69, 1 << 20); fprintf(stderr, "Y"); } fprintf(stderr, "\nfinished\n"); return 0; }