Bonjour,
Je viens de finir mes etudes en informatique, et j'ai postule pour un job concernant le C et la programmation embarquee.
A l'entretient il m'a ete posee une question (que je pense avoir mal repondu).
Je souhaiterai avoir quelques expliquations.
Voici la question qui m'a ete posee:
En plus de l'ennonce, etait joint un exemple d'une implementation possible des fonctions Malloc() et Free()Un systeme d'exploitation a ete devellope, dans lequel il est permis, grace a 2 fonctions d'allouer de la memoire a un programme.
La 1er fonction se nomme: void* big_Malloc(int size).
La 2eme fonction se nomme: void* small_Malloc(int size).
Les 2 fonctions renvoient un pointeur de type void* que si size est un multiple de 16.
Lorsque la place a allouer est superieur a 512 octets, big_Malloc() est appelee, dans le cas contraire (place a allouer <= 512 octets), small_Malloc()
serra appelee.
A ces 2 fonctions, sont associees 2 fonctions: void big_Free(void *ptr) et void small_Free(void *ptr), pour liberer la memoire.
Ecrivez l'implementation d'une fonction malloc() et free() en utilisant les fonctions decrites precedement, de telle sorte qu'il soit possible d'allouer toute taille (et non juste un multiple de 16)
l'implementation se doit d'etre claire et propre.
voici a peu pret a quoi cela ressemblait:
Il est stipule dans l'ennonce que le code est faux, et on demande de ne pas le corriger, il vient juste en guise d'indication pour nous orienter sur la bonne reponse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include "OS.h" int G_sz; void* Malloc(int size) { void *p; G_sz = size; if(size>512) { p=big_Malloc(size); } else { p=small_Maloc(size); } return p; } void Free(void *ptr) { if(size>512) { big_free(ptr); } else { small_free(ptr); } }
Qu'en pensez vous?
Merci
Partager