3Fermer5
PpHdLe 05/10/2014 à 17:13
Zerosquare (./3) :
Cette façon de calculer la mémoire disponible, en plus d'être conceptuellement crade, n'est probablement pas sûre sur tous les OS (au pif je dirais que tu risques de déclencher l'OOM killer, etc.).Maintenant j'imagine bien que si tu l'utilises, c'est que tu n'as pas de moyen de faire ça plus proprement.

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.

Zerosquare (./3) :
Après, je suis d'accord que l'optimisation que fait le compilateur n'est pas correcte en théorie, mais la différence n'est visible que dans des cas pathologiques, et pour les programmes qui font beaucoup de petites allocations le gain est probablement sensible. Je suis d'habitude contre les optimisations qui provoquent des effets de bord, mais là ça ne me choque pas qu'elle soit activée par défaut.

? Je ne suis pas sûr de comprendre ta phrase ? Le code suivant n'est pas optimisé
int f(int *);
int g(int n)
{
  int *p = malloc (12);
  if (p)
    {
      int n = f(p);
      free(p);
      return n;
    }
  return 0;
}

Donc elle est où l'optimisation utile ?