• [^] # Re: Langages modernes

    Posté par . En réponse au journal Gestion des erreurs d’allocation mémoire en C. Évalué à 3. Dernière modification le 27 octobre 2016 à 15:01.

    Ok merci de m'avoir corrigé ! Alors c'est effectivement du au vm.overcommit_memory = 0 mentioné par gouttegd (i.e. une "grosse" allocation est rejettée).
    Si on remplace le code par le suivant qui au lieu d'allouer 32 G en un coup alloue 32 fois 1G, il n'y a pas d'erreur. De même si on met le overcommit_memory à 1.

    import numpy as np
    L = [ np.empty(1024**3, dtype='int8') for i in range(32)]

    Donc "pratiquement", on n'a pas d'erreur sous linux...
    (Aussi content de savoir que numpy ne fait pas de memset par défaut, c'eût été un peu idiot).