-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.c
121 lines (94 loc) · 3.73 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <stdio.h>
#include <string.h>
#include "rlmalloc.h"
#define MY_NAME "rafael"
#define SMALL_STR "tiny"
#define verify_rlmalloc_ptr(ptr) do { \
if (!ptr) { \
printf("rlmalloc sucks!\n"); \
return 1; \
} \
} while(0)
int main() {
/*******************************************************/
/*******************************************************/
/***************** FIRST MEMORY ALLOC ******************/
/*******************************************************/
/*******************************************************/
size_t ARR_SIZE = 2;
printf("First memory allocation will take place NOW!\n");
int* arr = (int*) rlmalloc(sizeof(*arr) * ARR_SIZE);
verify_rlmalloc_ptr(arr);
printf("First memory allocation DONE!\n");
for (size_t i = 0; i < ARR_SIZE; i++) {
arr[i] = i * 10;
}
printf("First memory allocation: Printing array: \n");
for (size_t i = 0; i < ARR_SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
/*******************************************************/
/*******************************************************/
/***************** SECOND MEMORY ALLOC *****************/
/*******************************************************/
/*******************************************************/
size_t MY_NAME_SIZE = sizeof(MY_NAME);
printf("Second memory allocation will take place NOW!\n");
char* my_name = (char*) rlmalloc(sizeof(*my_name) * MY_NAME_SIZE);
verify_rlmalloc_ptr(my_name);
const char* aux = MY_NAME;
memcpy(my_name, aux, MY_NAME_SIZE);
printf("Second memory allocation: Printing my_name\n");
printf("%s", my_name);
/*******************************************************/
/*******************************************************/
/********** DEALLOC FIRST AND ALLOC THIRD *************/
/*******************************************************/
/*******************************************************/
printf("\nFirst memory allocation: Freeing array\n");
rlfree(arr);
printf("First memory allocation: Free DONE!\n");
size_t SMALL_STR_SIZE = sizeof(SMALL_STR);
printf("Third memory allocation will take place NOW!\n");
char* small_str = (char*) rlmalloc(sizeof(*small_str) * SMALL_STR_SIZE);
verify_rlmalloc_ptr(small_str);
const char* small_str_aux = SMALL_STR;
memcpy(small_str, small_str_aux, SMALL_STR_SIZE);
printf("Third memory allocation: Printing small_str\n");
printf("%s", small_str);
printf("\nThird memory allocation: Freeing small_str\n");
rlfree(small_str);
printf("Third memory allocation: Free DONE!\n");
printf("Second memory allocation: Printing my_name again: %s\n", my_name);
printf("\nSecond memory allocation: Freeing my_name\n");
rlfree(my_name);
printf("Second memory allocation: Free DONE!\n");
/*******************************************************/
/*******************************************************/
/****************** RANDOM ALLOCATIONS *****************/
/*******************************************************/
/*******************************************************/
printf("Random allocs\n");
char* var1 = (char*) rlmalloc(sizeof(*var1) * 10);
char* var2 = (char*) rlmalloc(sizeof(*var2) * 11);
char* var3 = (char*) rlmalloc(sizeof(*var3) * 12);
char* var4 = (char*) rlmalloc(sizeof(*var4) * 13);
char* var5 = (char*) rlmalloc(sizeof(*var5) * 14);
printf("Some free...\n");
rlfree(var1);
rlfree(var2);
rlfree(var3);
printf("More random allocs\n");
char* var6 = (char*) rlmalloc(sizeof(*var6) * 3);
char* var7 = (char*) rlmalloc(sizeof(*var7) * 4);
char* var8 = (char*) rlmalloc(sizeof(*var8) * 5);
printf("Final frees\n");
rlfree(var4);
rlfree(var5);
rlfree(var6);
rlfree(var7);
rlfree(var8);
printf("DONE!\n");
return 0;
}