1 /* $OpenBSD: malloc_ulimit2.c,v 1.2 2006/05/16 05:47:13 otto Exp $ */ 2 3 /* Public Domain, 2006, Otto Moerbeek <otto@drijf.net> */ 4 5 #include <sys/types.h> 6 #include <sys/time.h> 7 #include <sys/resource.h> 8 #include <err.h> 9 #include <stdlib.h> 10 #include <stdio.h> 11 12 #define FACTOR 1024 13 14 main() 15 { 16 struct rlimit lim; 17 size_t sz; 18 int i; 19 void *p; 20 21 if (getrlimit(RLIMIT_DATA, &lim) == -1) 22 err(1, "getrlimit"); 23 24 sz = lim.rlim_cur / FACTOR; 25 26 for (i = 0; ; i++) { 27 size_t len = (sz-i) * FACTOR; 28 p = malloc(len); 29 if (p != NULL) { 30 free(p); 31 break; 32 } 33 } 34 i += 10; 35 for (; i >= 0; i--) { 36 size_t len = (sz-i) * FACTOR; 37 p = malloc(len); 38 free(p); 39 free(malloc(4096)); 40 } 41 return (0); 42 } 43