1 #include <stdlib.h>
2
3 // All sizes are divisible by 16 -- no slop.
4
ignore1(void)5 int* ignore1(void)
6 {
7 // Allocating/freeing in an ignored function: ignored.
8 int* ignored_x1 = malloc(400);
9 int* ignored_x2 = malloc(400);
10 free(ignored_x2);
11 return ignored_x1;
12 }
13
ignore2(int * x,int * ignored_x)14 void ignore2(int* x, int* ignored_x)
15 {
16 // Growing/shrinking a non-ignored block in an ignored function: ignored.
17 x = realloc(x, 800);
18 x = realloc(x, 400);
19
20 // Growing/shrinking an ignored block in an ignored function: ignored.
21 ignored_x = realloc(ignored_x, 800);
22 ignored_x = realloc(ignored_x, 400);
23 }
24
main(void)25 int main(void)
26 {
27 int* x;
28 int* ignored_x;
29
30 // Not ignored.
31 x = malloc(400);
32
33 // Get an ignored block.
34 ignored_x = ignore1();
35
36 // Growing/shrinking a non-ignored block in a non-ignored function:
37 // not ignored.
38 x = realloc(x, 800);
39 x = realloc(x, 400);
40
41 // Growing/shrinking an ignored block in a non-ignored function: ignored.
42 ignored_x = realloc(ignored_x, 800);
43 ignored_x = realloc(ignored_x, 400);
44
45 ignore2(x, ignored_x);
46
47 x = realloc(ignored_x, 0); // equivalent to 'free(ignored_x)'.
48
49 return 0;
50 }
51
52