4Fermer6
ZerosquareLe 05/10/2014 à 17:52
PpHd (./4) :
En quoi c'est crade ? Je suis sûr de ne pas déclencher l'OOM killer vu que ca ne réserve de l'espace virtuel, et pas de l'espace réel.
Je considère que déterminer la mémoire disponible de cette façon est foireux pour plusieurs raisons :
- en-dehors des OS "simples", rien ne garantit que la quantité de mémoire dispo ne variera pas entre le moment où tu fais ton estimation et le moment où tu utilises le résultat, mais même pendant que tu fais ton estimation.
- le résultat obtenu dépend complètement de la stratégie d'allocation de la libc et de l'OS. Si ça ne fait que réserver de la mémoire sans l'allouer réellement tant qu'elle n'est pas accédée, le résultat peut être beaucoup plus grand que la mémoire physique réellement disponible.
PpHd (./4) :
Donc elle est où l'optimisation utile ?
Ce que je veux dire, c'est que la seule façon de résoudre le problème du bug report que tu as cité (en supposant qu'on ne peut pas prévoir à l'avance si l'allocation sur la pile va échouer), c'est de désactiver l'inlining de malloc()/free() pour des allocations de petite taille.