| #include <stdlib.h> |
| |
| // All sizes are divisible by 16 -- no slop. |
| |
| int* ignore1(void) |
| { |
| // Allocating/freeing in an ignored function: ignored. |
| int* ignored_x1 = malloc(400); |
| int* ignored_x2 = malloc(400); |
| free(ignored_x2); |
| return ignored_x1; |
| } |
| |
| void ignore2(int* x, int* ignored_x) |
| { |
| // Growing/shrinking a non-ignored block in an ignored function: ignored. |
| x = realloc(x, 800); |
| x = realloc(x, 400); |
| |
| // Growing/shrinking an ignored block in an ignored function: ignored. |
| ignored_x = realloc(ignored_x, 800); |
| ignored_x = realloc(ignored_x, 400); |
| } |
| |
| int main(void) |
| { |
| int* x; |
| int* ignored_x; |
| |
| // Not ignored. |
| x = malloc(400); |
| |
| // Get an ignored block. |
| ignored_x = ignore1(); |
| |
| // Growing/shrinking a non-ignored block in a non-ignored function: |
| // not ignored. |
| x = realloc(x, 800); |
| x = realloc(x, 400); |
| |
| // Growing/shrinking an ignored block in a non-ignored function: ignored. |
| ignored_x = realloc(ignored_x, 800); |
| ignored_x = realloc(ignored_x, 400); |
| |
| ignore2(x, ignored_x); |
| |
| x = realloc(ignored_x, 0); // equivalent to 'free(ignored_x)'. |
| |
| return 0; |
| } |
| |