blob: 208394964d610ec3deade7e2e83e0fc5c5751e29 (
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
/**
* Copyright (C) 2016, 2018, 2021 Tom Ryder <tom@sanctum.geek.nz>
*
* This file is part of doomsh.
*
* doomsh is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* doomsh is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* doomsh. If not, see <https://www.gnu.org/licenses/>.
*/
#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); */
}
}
|