Bonjour à tous,
Voilà j'aurai une petite question à propos de mon malloc. Ma structure t_block contient trois champs (size_t size, t_block next, et int free).
Voici mon code de démarage:
En fait pour le début je voudrais simplement renvoyer un pointeur sur l'espace mémoire alloué (si ça a réussit) et que l'utilisateur puisse ajouter des données dans le nouvel espace mémoire. Et renvoyer NULL si ça a échoué en mettant errno à ENOMEM. Mon soucis c'est que je ne sais pas si il faut que je fasse bloc = sbrk (sizeof (struct s_block) + size); car c'est bien beau je retourne bien un pointeur à la fin mais est-ce qu'il c'est déplacé? Ma question doit être stupide mais c'est juste que je doute. Merci pour vos réponses!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 void *malloc(size_t size) { t_block bloc; bloc = sbrk(0); sbrk (sizeof (struct s_block) + size); bloc->size = size; if(brk(sbrk(size)) == -1) { errno = ENOMEM; return (NULL); } else return (bloc); }