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 :

programme qui plante lorsque trop de calculs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 113
    Par défaut programme qui plante lorsque trop de calculs
    re-bonjour tout le monde,

    j'ai une nouvelle question

    Je fais un petit programme qui calcul des coordonnées dans l'espace et mon programme plante lorsque le maillage devient trop grand

    Quand je dis planter je veux dire que mon ordi n'est pas lent, j'ai immédiatement le message d'erreur "envoyer rapport d'erreur etc..."

    Comment éviter cela ?

    Vous me direz peut être que c'est logique (question de RAM etc...) mais alors si c'est normal comment font les programmes qui peuvent faire des calculs très lourd tel que Matlab ?

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Sans un code minimal de ton programme, il nous est difficile de voir les problèmes potentiels de ton code.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 113
    Par défaut
    Je peux vous le mettre mais je ne suis pas sur que cela soit très utile puisqu'il marche très bien ... pour un maillage de 50x50, de 100x100 ou de 200x200 mais pour du 500x500 j'ai le droit au rapport d'erreur

    c'est pour cela que j'imagine que c'est un problème mémoire mais pour un programme comme Matlab, il ne plante pas, il mouline pendant une demi heure et donne la solution

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Euh, ben pour voir où la bât blesse, même si ça marche pour les petites charges, il faut qu'on voie le code, sinon...
    A part ça, comment résoudre les problèmes de volumétrie...économiser la mémoire, et ne pas tenter de tout garder en mémoire (sectionner le problème et écrire au fur et à mesure, dans des fichiers temporaires ou dans le fichier définitif...)

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par therwald Voir le message
    Euh, ben pour voir où la bât blesse, même si ça marche pour les petites charges, il faut qu'on voie le code, sinon...
    A part ça, comment résoudre les problèmes de volumétrie...économiser la mémoire, et ne pas tenter de tout garder en mémoire (sectionner le problème et écrire au fur et à mesure, dans des fichiers temporaires ou dans le fichier définitif...)
    Je pressent une explosion de la pile. 500x500 entités de X octets allouées sur une pile, on va vite dépasser le Mo généralement réservé pour celle-ci. Le simple fait de stocker un uint32_t va probablement poser un problème. Si les objets stockés dans le tableau on une taille plus importante, ça va poser problème très, très rapidement.

    Si ça passe avec 200x200, c'est que les objets font moins de 26 bytes.

    Quoi qu'il en soit, quand on a besoin d'une grosse quantité de mémoire comme ça, on ne la prends pas sur la pile : on l'alloue
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 113
    Par défaut
    Suite à vos conseils j'ai un peu réflechi à mon algorithme et tu avais raison therwald, je déclarais tout sous forme de tableau statique alors que je pouvais tout simplement stocker mes calculs intermédiaires dans quelques variables qui seraient remplacées à chaque itération . Du coup c'est ce que j'ai fais et mon calcul tourne dorénavant pour n'importe quelle valeur de maillage

    Merci beaucoup donc

    Et sinon n'étant pas programmeur je ne connais pas trop la différence entre prendre la mémoire sur la pile et l'allouer mais je vais me renseigner car cela m’intéresse beaucoup

    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. programme qui plante
    Par warubi dans le forum C++
    Réponses: 35
    Dernier message: 04/02/2007, 10h57
  2. Programme qui plante : seg fault
    Par Premium dans le forum C
    Réponses: 10
    Dernier message: 01/12/2006, 15h12
  3. programme qui plante. chercher/remplacer dans des fichiers.
    Par [Hugo] dans le forum Général Python
    Réponses: 2
    Dernier message: 31/10/2006, 17h10
  4. Faire un programme qui plante et noter le plantage
    Par cedricgirard dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 16h36
  5. Programme qui plante
    Par harris_macken dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2005, 23h50

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