Ensuite la mémoire de ton processus n'est libérée que lors de l'exit de ton process.
Pendant tout son temps de fonctionnement il 'occupe' de la mémoire qui n'est plus disponible pour les autres process, si ce n'est pas nécessaire alors autant ne pas le faire.
La fonction malloc de ton compilateur n'est pas forcément un appel direct au kernel.
Sur certain compilo et suivant la version, au démarrage une grande quantité (2Mo par exemple) est demandé au kernel (kmalloc), ensuite les appel suivant à malloc travaillent dans ce 'pool' et quand le 'pool' est épuisé une nouvelle quantitée est demandé au kernel et ainsi de suite.
Cette technique de pré-alloc permet d'éviter un grand nombre d'appel au kernel (ce qui est couteux en termes de performance à cause du changement de contexte d'execution processeur à faire) et pénalisant pour les performances générale du système .
Avec gcc on peut remplacer la routine malloc de la libc par une autre et certaine implémantation alternative sont assez intéressante à étudier voici un exemple http://hoard.org/
En conclusion, toujours avoir la discipline d'équilibrer malloc/free et une bonne pratique sur PC et est indispensable en embarqué crois moi d’expérience.
# Déjà c'est une bonne pratique
Posté par TheBreton . En réponse au message pourquoi je dois faire un free() alors que le noyau libere la mémoire à la fin de mon processus. Évalué à 2.
Ensuite la mémoire de ton processus n'est libérée que lors de l'exit de ton process.
Pendant tout son temps de fonctionnement il 'occupe' de la mémoire qui n'est plus disponible pour les autres process, si ce n'est pas nécessaire alors autant ne pas le faire.
La fonction malloc de ton compilateur n'est pas forcément un appel direct au kernel.
Sur certain compilo et suivant la version, au démarrage une grande quantité (2Mo par exemple) est demandé au kernel (kmalloc), ensuite les appel suivant à malloc travaillent dans ce 'pool' et quand le 'pool' est épuisé une nouvelle quantitée est demandé au kernel et ainsi de suite.
Cette technique de pré-alloc permet d'éviter un grand nombre d'appel au kernel (ce qui est couteux en termes de performance à cause du changement de contexte d'execution processeur à faire) et pénalisant pour les performances générale du système .
Avec gcc on peut remplacer la routine malloc de la libc par une autre et certaine implémantation alternative sont assez intéressante à étudier voici un exemple
http://hoard.org/
En conclusion, toujours avoir la discipline d'équilibrer malloc/free et une bonne pratique sur PC et est indispensable en embarqué crois moi d’expérience.