Thibaut (./19) :
C'est emmerdant qu'il n'existe pas une fonction rapide dans la bibliothèque standard pour vérifier la mémoire réellement disponible.
C'est surtout moins simple qu'il n'y paraît. Si le but est de vérifier combien il reste de place avant de faire une allocation mémoire, 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
- 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
- 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)
Il y a le même genre de problèmes avec l'espace disque (par exemple, sur un système de fichiers compressé, l'espace disque restant est juste une estimation plus ou moins grossière).