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 :

StackOverflowException sous MS visual 2015


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut StackOverflowException sous MS visual 2015
    Bonjour ,

    Sous MS visual 2015 , un code pour console me renvoie le message suivant : "Process is terminated due StackOverflowException"

    Ce même code sous dev++ ne pose pas de problème.

    Ce code ouvre un fichier *.csv , enregistre des string dans des variables tableaux puis les convertis en double.

    Pouvez-m'éclairer ?

    Merci.

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Il faut lancer le programme en mode "Debug" avec VS 2015. Normalement, je dis bien normalement..., le débogeur va s'arrêter sur le problème directement.

    Sinon, un peu plus d'information serait le bienvenu.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut
    Message en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Le thread 'Thread Win32' (0x17f4) s'est arrêté avec le code 0 (0x0).
    Une exception non gérée du type 'System.StackOverflowException' s'est produite dans ConsoleApplication1.exe
     
    Le thread 'Thread Win32' (0x1ea4) s'est arrêté avec le code -2147023895 (0x800703e9).
    Le thread 'Thread Win32' (0x1cdc) s'est arrêté avec le code -2147023895 (0x800703e9).
    Le thread 'Thread Win32' (0x1dac) s'est arrêté avec le code -2147023895 (0x800703e9).
    Le programme '[7940] ConsoleApplication1.exe: Managé (v4.0.30319)' s'est arrêté avec le code -2147023895 (0x800703e9).
    Le programme '[7940] ConsoleApplication1.exe: Natif' s'est arrêté avec le code -2147023895 (0x800703e9).
    J'ai lu sur des posts qu'il fallait tester les retours des fonctions. Je recherche cette signification...

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    StackOverflowException c'est souvent une boucle infinie ou une récursive qui s'emballe.
    Recherche donc dans ton code les blocs qui pourraient en être la source.

    Sinon as-tu essayé la méthode de moldavi ?
    Ça devrait te permettre de savoir exactement à quel moment (quelle ligne de code) ça part en ziz.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Citation Envoyé par macErmite Voir le message
    Message en sortie :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Le thread 'Thread Win32' (0x17f4) s'est arrêté avec le code 0 (0x0).
    Une exception non gérée du type 'System.StackOverflowException' s'est produite dans ConsoleApplication1.exe
    
    Le thread 'Thread Win32' (0x1ea4) s'est arrêté avec le code -2147023895 (0x800703e9).
    Le thread 'Thread Win32' (0x1cdc) s'est arrêté avec le code -2147023895 (0x800703e9).
    Le thread 'Thread Win32' (0x1dac) s'est arrêté avec le code -2147023895 (0x800703e9).
    Le programme '[7940] ConsoleApplication1.exe: Managé (v4.0.30319)' s'est arrêté avec le code -2147023895 (0x800703e9).
    Le programme '[7940] ConsoleApplication1.exe: Natif' s'est arrêté avec le code -2147023895 (0x800703e9).

    J'ai lu sur des posts qu'il fallait tester les retours des fonctions. Je recherche cette signification...
    Et que dit la fenêtre "call stack", plutôt que la "output"?
    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.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut
    Voilà ce qui sort de la pile d'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >
    	ConsoleApplication1.exe!main() Ligne 257 + 0xffffff91 octets	C++
     	ConsoleApplication1.exe!invoke_main()  Ligne 64 + 0x1b octets	C++
     	ConsoleApplication1.exe!__scrt_common_main_seh()  Ligne 255 + 0x5 octets	C++
     	ConsoleApplication1.exe!__scrt_common_main()  Ligne 300	C++
     	ConsoleApplication1.exe!mainCRTStartup()  Ligne 17	C++
     	[Code externe]	
     	mscoreei.dll!__CorExeMain@0()  + 0x71 octets	
     	mscoree.dll!_ShellShim__CorExeMain@0()  + 0x227 octets	
     	mscoree.dll!__CorExeMain_Exported@0()  + 0x8 octets	
     	ntdll.dll!___RtlUserThreadStart@8()  + 0x27 octets	
     	ntdll.dll!__RtlUserThreadStart@8()  + 0x1b octets

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 492
    Par défaut
    Vous entrez dans la méthode "main" (utilisez le débuggeur)?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut
    Je ne comprends pas votre question.

  9. #9
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    Depuis quand on se vouvoie ici ?
    Vérifie bien que ton projet soit compilé en mode Debug dans la barre d'outils.
    Ensuite lance le débugage avec la touche F5 et dis-nous si une flèche jaune apparaît à côté de ton code au moment du plantage. Si oui, il faut nous montrer le code aux alentours.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut
    Oui je suis bien en mode debug.

    j'ai placé un maximum de ligne de code en commentaire, puis "libérer" des blocs de lignes. l'ensemble plante lorsque que je déclare un string tableau : string registre[200][300].

  11. #11
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    Ah! 200 x 300 = 60000 c'est ça? Donc tu essayes de faire rentrer dans la pile (zone des variables temporaires ) 60000 strings
    Il faudrait mieux les stocker dans le tas avec un "new".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string *registre = new string[200*300];

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut
    C'est une feuille Excel, enregistrer en *.csv

  13. #13
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Citation Envoyé par SkyZoThreaD Voir le message
    Ah! 200 x 300 = 60000 c'est ça? Donc tu essayes de faire rentrer dans la pile (zone des variables temporaires ) 60000 strings
    Il faudrait mieux les stocker dans le tas avec un "new".
    Ou utiliser un vector. On n'est pas en C ici!
    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.

  14. #14
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    C'est pour ça... les données ça ne se déclare pas dans le stack.
    Essaye de lire quelques cours sur la pile et le tas sur developpez.com ça te sera indispensable en C/C++.

    Edit:
    Ou utiliser un vector. On n'est pas en C ici!
    Oops ! c'est vrai !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<string> registre;
    D'habitude les débutants font du C..

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut
    Voilà, après corrections, ce qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	int no_of_cols = 200;
    	int no_of_rows = 200;
     
    	std::vector<std::vector<string>> registre;
    	registre.resize(no_of_rows, std::vector<string>(no_of_cols));

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

Discussions similaires

  1. programmer en c sous microsoft visual studio 2005
    Par chrysmac2003 dans le forum Visual C++
    Réponses: 11
    Dernier message: 02/10/2006, 18h01
  2. Réponses: 1
    Dernier message: 02/05/2006, 11h41
  3. probleme link c++ sous microsoft visual
    Par seb833434 dans le forum MFC
    Réponses: 5
    Dernier message: 10/04/2006, 15h50
  4. [C++] Interfacage MySQL/C++ sous MS Visual C++ (.NET 2003)
    Par yelbied dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/11/2005, 18h25
  5. Interface graphique sous embedded visual C++ !!
    Par acastor dans le forum MFC
    Réponses: 4
    Dernier message: 16/03/2004, 19h35

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