IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Allocation de (beaucoup) de memoire


Sujet :

C++

  1. #21
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    C'est assez explicite je crois...
    Ca dit seulement que sur un OS 32 bits tu ne peux en général pas créer un espace virtuel utilisateur > 2Go.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  2. #22
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    La question initiale était "comment le détecter", ben voila c'est fait. C'est normal qu'il y ait des limites sur l'allocation mémoire, on va pas en vouloir aux os pour ça

  3. #23
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    La question initiale était "comment le détecter", ben voila c'est fait. C'est normal qu'il y ait des limites sur l'allocation mémoire, on va pas en vouloir aux os pour ça
    Nope, la question initiale était "j'alloue 1Go et çà plante".
    Ce que l'exemple montre c'est qu'on ne peut pas planter le système en allouant 1Go de mémoire virtuelle mais peut être en s'en servant.
    => nous avons quelques idées sur le problème 'initial" mais toujours pas cerné le problème.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #24
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ce que l'exemple montre c'est qu'on ne peut pas planter le système en allouant 1Go de mémoire virtuelle mais peut être en s'en servant.
    Heu, t'es aveugle ou quoi? Le message affiché dans sa console est on ne peut plus clair, ici ce n'est pas un plantage qui se produit, mais une levée d'exception lors du new parfaitement attendue, bref exactement ce qui est supposé se passer selon le standard C++. Dans ce cas ça plante après bien entendu, ce n'est pas supposé faire autre chose quand on ne gère pas les exceptions.
    Alors je suis bien d'accord qu'il faut trouver une solution, que ce soit en utilisant un système à la mmap fournis par le système, non fournis par le système ou tout simplement en ne réservant pas autant de mémoire. Néanmoins ça montre bien, fort heureusement, que le mode de fonctionnement que tu as évoqué à base de plantage complètement aléatoire, inévitable et impossible à prévoir lors d'un accès à l'une des pages allouées n'est pas le mode de fonctionnement utilisé par son système. Et ça c'est rassurant (si si).

  5. #25
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Les exceptions ça s'attrape hein... try/catch.

  6. #26
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    Heu, t'es aveugle ou quoi? Le message affiché dans sa console est on ne peut plus clair, ici ce n'est pas un plantage qui se produit, mais une levée d'exception lors du new parfaitement attendue, bref exactement ce qui est supposé se passer selon le standard C++. Dans ce cas ça plante après bien entendu, ce n'est pas supposé faire autre chose quand on ne gère pas les exceptions.
    Alors je suis bien d'accord qu'il faut trouver une solution, que ce soit en utilisant un système à la mmap fournis par le système, non fournis par le système ou tout simplement en ne réservant pas autant de mémoire.
    Néanmoins ça montre bien, fort heureusement, que le mode de fonctionnement que tu as évoqué à base de plantage complètement aléatoire, inévitable et impossible à prévoir lors d'un accès à l'une des pages allouées n'est pas le mode de fonctionnement utilisé par son système. Et ça c'est rassurant (si si).
    Il y a deux tests:
    1 - j'alloue moins de 2Go (et beaucoup plus aue 1Go) et ca ne plante pas,
    2 - j'alloue plus de 2 Go et çà plante comme attendu - parce qu'on dépasse la limite de l'espace utilisateur en 32 bits.

    Dans le cas (2) mmap ne sert à rien, il faut un OS 64 bits.

    Ce que j'ai fait n'est sans doute pas ce qu'a fait l'auteur du post: nous ne savons toujours pas ce qui plante de son côté.

    Mon test vérifie simplement qu'on peut allouer un espace virtuel important sans que ela retourne d'erreur même si on n'a ni la RAM ni le swap.

    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #27
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Les exceptions ça s'attrape hein... try/catch.
    Je suis d'accord mais mon test avait pour propos de montrer que:
    1 - on peut allouer plus de 1Go sans que cela retourne d'erreurs,
    2 - la mecanisque d'exception se met en marche lorsqu'on dépasse la limite de l'espace virtuel.
    Donc que le problème soumis originallement était 'ailleurs' que dans le retour du new.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #28
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Quand une erreur arrive après l'allocation, ça veut dire que tu es sous Linux avec l'allocation mémoire optimiste (le truc dont parle JolyLoic) activée. Dommage pour toi.

    Normalement, s'il n'y a pas assez de mémoire (physique + swap) disponible, new doit lancer une exception C++ std::bad_alloc (ou retourner NULL pour les versions obsolètes). S'il ne fait ni l'un ni l'autre, c'est que l'allocation optimiste est active.
    Et c'est un vrai fléau, mais c'est toujours mieux que d'autres politiques d'allocation qu'on m'a mentionnées sur certains systèmes unixoïdes, comme tuer automatiquement un process pour libérer de la mémoire...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #29
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Quand une erreur arrive après l'allocation, ça veut dire que tu es sous Linux avec l'allocation mémoire optimiste (le truc dont parle JolyLoic) activée. Dommage pour toi.
    Je suis d'accord avec tout çà...
    Mais je te ferais remarquer que je ne suis pas l'auteur du post...
    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #30
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    A ce propos il semblerait qu'il ait disparu

  11. #31
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Par défaut
    Non non, pas du tout !

    Merci pour toutes vos réponses, je suis en train de trouver la solution...

    Effectivement, sous Windows, j'ai bien une exception qui est lancée => nickel.

    Pour Linux, je m'y attaque aujourd'hui...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. csrss.exe utilise beaucoup de memoire : virus ?
    Par naokylon dans le forum Sécurité
    Réponses: 6
    Dernier message: 03/01/2013, 11h58
  2. Réponses: 2
    Dernier message: 15/07/2008, 16h46
  3. Allocation dynamique de la memoire ?
    Par gotrunkssj dans le forum Bibliothèque standard
    Réponses: 6
    Dernier message: 22/01/2008, 21h04
  4. programme qui consomme beaucoup de memoire
    Par gaut dans le forum Windows
    Réponses: 10
    Dernier message: 01/02/2005, 20h33
  5. allocation et desallocation de memoire
    Par barthelv dans le forum C
    Réponses: 7
    Dernier message: 22/06/2004, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo