| #include <malloc.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| |
| #define N 10000 |
| |
| static void *arr[N]; |
| |
| static int |
| do_test (void) |
| { |
| for (int i = 0; i < N; ++i) |
| { |
| size_t size = random () % 16384; |
| |
| if ((arr[i] = malloc (size)) == NULL) |
| { |
| nomem: |
| puts ("not enough memory"); |
| return 0; |
| } |
| |
| memset (arr[i], size, size); |
| } |
| |
| void *p = malloc (256); |
| if (p == NULL) |
| goto nomem; |
| memset (p, 1, 256); |
| |
| puts ("=================================================================="); |
| |
| for (int i = 0; i < N; ++i) |
| if (i % 13 != 0) |
| free (arr[i]); |
| |
| puts ("=================================================================="); |
| |
| malloc_trim (0); |
| |
| puts ("=================================================================="); |
| |
| p = malloc (30000); |
| if (p == NULL) |
| goto nomem; |
| |
| memset (p, 2, 30000); |
| |
| malloc_trim (0); |
| |
| return 0; |
| } |
| |
| #define TEST_FUNCTION do_test () |
| #include "../test-skeleton.c" |