Zerosquare (./5) :
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 va échouer), c'est de désactiver l'inlining de malloc()/free() pour des allocations de petite taille.
Il n'y a pas de inlining de malloc / free avec clang ? Où alors je ne l'ai jamais vu (et ce n'est pas la source du bug).
Zerosquare (./5) :
- 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 (voire pendant que tu fais estimation).
Il n'y a pas grand chose de garantie dans un OS... (pour info, je fais un mmap juste après l'estimation).
J'ai fait un petit test rapide : lancer 9x un programme qui fait un tel calcul :
23945 pphd 20 0 9,8g 239m 356 D 0,7 6,0 0:04.49 t-charge
23946 pphd 20 0 9,8g 741m 364 D 0,7 18,7 0:11.13 t-charge
23951 pphd 20 0 9,8g 439m 356 D 0,7 11,1 0:05.82 t-charge
23942 pphd 20 0 9,8g 338m 356 D 0,3 8,5 0:05.04 t-charge
23943 pphd 20 0 9,8g 281m 356 D 0,3 7,1 0:04.67 t-charge
23944 pphd 20 0 9,8g 259m 356 D 0,3 6,6 0:04.63 t-charge
23947 pphd 20 0 9,8g 302m 356 D 0,3 7,6 0:04.53 t-charge
23948 pphd 20 0 9,8g 302m 356 D 0,3 7,6 0:04.79 t-charge
23949 pphd 20 0 9,8g 303m 356 D 0,3 7,7 0:04.76 t-charge
Toutes les instances ont alloués le même montant de la mémoire (sur un ordi avec 4Go de RAM ça fait presque 98G de virtualisé

Mais l'OOM killer n'est pas venu ).
Donc il semblerait que le maximum allouable soit indépendant des autres process sous Linux.
Il faudrait que je fasse ce test sous MS Windows, mais j'ai vraiment peut de mettre en carafe MS Windows par un test aussi violent !
Zerosquare (./5) :
- 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.
Oui. Et ça reste le
maximum allouable et c'est ce que je veux. Ce n'est pas la taille de la RAM.