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