#include #include #include #include /** * mem.c -- Exhaust your memory * * This won't do what you expect on Linux if you don't have a ulimit set. * Uncomment the memset(3) call at the end of the loop to fill the pointer if * you really want to actually use the memory. Do you trust your OOM though? */ int main(void){ void *ptr = NULL; unsigned long mb = 5; for (;;mb += 5) { fprintf(stderr, "%lu MB\n", mb); if ((ptr = realloc(ptr, mb * 1000000)) == NULL) { raise(SIGABRT); } /* memset(ptr, 0, mb * 1000000); */ } }