aboutsummaryrefslogtreecommitdiff
path: root/tests/mem.c
blob: b39e538f2a5c3c044b45372260bdd133d48eefb2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**
 * 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); */
    }
}