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