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