mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-09 00:46:12 +00:00
52 lines
1.1 KiB
C
52 lines
1.1 KiB
C
#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;
|
|
}
|
|
|