1 #include <malloc.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 
6 #define N 10000
7 
8 static void *arr[N];
9 
10 static int
do_test(void)11 do_test (void)
12 {
13   for (int i = 0; i < N; ++i)
14     {
15       size_t size = random () % 16384;
16 
17       if ((arr[i] = malloc (size)) == NULL)
18 	{
19 	nomem:
20 	  puts ("not enough memory");
21 	  return 0;
22 	}
23 
24       memset (arr[i], size, size);
25     }
26 
27   void *p = malloc (256);
28   if (p == NULL)
29     goto nomem;
30   memset (p, 1, 256);
31 
32   puts ("==================================================================");
33 
34   for (int i = 0; i < N; ++i)
35     if (i % 13 != 0)
36       free (arr[i]);
37 
38   puts ("==================================================================");
39 
40   malloc_trim (0);
41 
42   puts ("==================================================================");
43 
44   p = malloc (30000);
45   if (p == NULL)
46     goto nomem;
47 
48   memset (p, 2, 30000);
49 
50   malloc_trim (0);
51 
52   return 0;
53 }
54 
55 #define TEST_FUNCTION do_test ()
56 #include "../test-skeleton.c"
57