Malloc

1/13

I) OBJECTIF

2/13
void *malloc(size_t);
void *realloc(void *, size_t);
void *calloc(size_t, size_t);
void free(void *);
II) BRK / SBRK
3/13
int brk(void *);
void *sbrk(intptr_t);

III) FONCTIONNEMENT DES ALLOCATIONS

4/13

III) FONCTIONNEMENT

5/13
1. Vérification de l'espace libre

III) FONCTIONNEMENT

6/13
2. Allocation ou réutilisation

typedef struct metadata_s {
void *ptr;
size_t size;
struct metadata_s *next;
struct metadata_s *prev;
struct metadata_s *last;
char occupied;
} metadata_t;
IV) FONCTIONNEMENT DES DÉSALLOCATIONS

7/13

IV) FONCTIONNEMENT

8/13
1. Marquage
typedef struct metadata_s {
void *ptr;
size_t size;
struct metadata_s *next;
struct metadata_s *prev;
struct metadata_s *last;
char occupied;
} metadata_t;
IV) FONCTIONNEMENT

9/13
2. Fusion

IV) FONCTIONNEMENT

10/13
3. Libération

V) COMPÉTENCES

11/13
-
Compréhension de la gestion de la mémoire
-
Utilisation LD_PRELOAD
VI) OPTIMISATIONS POSSIBLES

12/13
-
Double liste chaînée
-
Meilleure gestion du PageSize
-
Split lors du malloc
ANY
QUESTION
?
Malloc
By thibautcornolti
Malloc
- 68