5fa591301f623a3e89544c3877b4f1aba3cbb6d3
[metze/misc/junkcode.git] / malloc-reclaim / malloc-reclaim.c
1 /*
2  * Author: Stefan Metzmacher <metze@samba.org>
3  */
4
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include <string.h>
8 #include <unistd.h>
9
10 /*
11  * start this with gdb and break on 'mybreak'
12  * and search for [heap] in /proc/<pid>/smaps
13  * at each step.
14  */
15
16 static void mybreak(void)
17 {
18 }
19
20 int main(void)
21 {
22         int i;
23         void *p1[10000];
24         void *p2[10000];
25
26         printf("pid: %d\n", getpid());
27
28         for (i=0; i < 10000; i++) {
29                 p1[i] = malloc(10000);
30                 memset(p1[i], 0xDF, 10000);
31                 p2[i] = malloc(10);
32                 memset(p2[i], 0xAB, 10);
33         }
34
35         mybreak();
36
37         for (i=0; i < 10000; i++) {
38                 free(p1[i]);
39         }
40
41         mybreak();
42
43         for (i=0; i < 10000; i++) {
44                 p1[i] = malloc(10000);
45                 memset(p1[i], 0xDF, 10000);
46         }
47
48         mybreak();
49
50         for (i=0; i < 10000; i++) {
51                 free(p1[i]);
52         }
53
54         mybreak();
55
56         for (i=0; i < 10000; i++) {
57                 free(p2[i]);
58         }
59
60         mybreak();
61
62         return 0;
63 }