diff options
Diffstat (limited to 'schulung_tools/malloc/malloc.c')
| -rw-r--r-- | schulung_tools/malloc/malloc.c | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/schulung_tools/malloc/malloc.c b/schulung_tools/malloc/malloc.c index a636426..76defbe 100644 --- a/schulung_tools/malloc/malloc.c +++ b/schulung_tools/malloc/malloc.c @@ -1,57 +1,45 @@ #include <stdio.h> #include <stdlib.h> -#include <unistd.h> #include <string.h> -#define NUM_OF_GBYTES 8 - -/* if verbose is enabled forks are done for printing additional informations */ -#define VERBOSE 0 - -#if VERBOSE -/* forking is not always possible if memory is low */ -#define sys(cmd) if(system(cmd) == -1) printf("%s failed\n", cmd); -#else -#define sys(cmd) ; -#endif +extern void print_stats(int); -#define MEMFREE "free -h" +#define NUM_OF_GBYTES 8 int main(void) { char *p[NUM_OF_GBYTES]; int i; - printf("memory usage:\n"); - sys(MEMFREE); - printf("\n\n"); - for (i = 0; i < NUM_OF_GBYTES; i++) { + printf("allocating 1GB\n"); + print_stats(0); p[i] = malloc(1024 * 1024 * 1024); - printf("allocated 1GB: %p\n", p[i]); - sys(MEMFREE); + print_stats(1); + printf(" malloc returned: %p\n", p[i]); } - printf("\n\n"); + printf("\n"); for (i = 0; i < NUM_OF_GBYTES; i++) { if (p[i]) { printf("memsetting 1GB: %p\n", p[i]); - sys("date +%s.%N"); + print_stats(0); memset(p[i], 1, 1024 * 1024 * 1024); - sys("date +%s.%N"); - sys(MEMFREE); + print_stats(1); } } - printf("\n\n"); + printf("\n"); for (i = 0; i < NUM_OF_GBYTES; i++) { if (p[i]) { printf("free 1GB: %p\n", p[i]); + print_stats(0); free(p[i]); - sys(MEMFREE); + print_stats(1); } } + return 0; } |
