35Fermer37
ThibautLe 10/01/2011 à 15:03
Zerosquare (./25) :
c'est foireux pour un tas de raisons :- sur un système multitâche, la situation peut avoir changé entre l'appel de la fonction qui donne la taille mémoire restante et la fonction qui alloue de la mémoire
C'est vrai, lorsqu'on est contraint de procéder en deux étapes, comme avec Linux. Mais l'OS connaît l'espace disponible à l'instant où il traite le malloc, car il traite une demande à la fois.
Windows renvoie NULL lorsque la demande dépasse la capacité ? Si oui, pourquoi Linux ne le fait pas ?
- pour satisfaire une allocation mémoire, le système peut libérer de la mémoire précédemment utilisée en swappant ou en virant des pages allouées à des caches
Il doit pouvoir anticiper ce qui sera ainsi libéré.
- la mémoire peut être fragmentée, ce qui fait qu'on ne peut pas forcément allouer autant que prévu (c'est pas trop un problème sur les machines qui gèrent la pagination, mais sur un système ancien ou peu puissant ça peut se produire)
On travaille sur Ubuntu, sur des processeurs plus récents que le 8086.