summaryrefslogtreecommitdiff
path: root/schulung_tools/malloc/malloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'schulung_tools/malloc/malloc.c')
-rw-r--r--schulung_tools/malloc/malloc.c38
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;
}