Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1430 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  pb àl'execution car prog trop gros pour DEV-CPP

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

pb àl'execution car prog trop gros pour DEV-CPP

n°963299
smag
Posté le 27-01-2005 à 00:05:42  profilanswer
 

Bonjour,
Hier, j'ai lancé un prog qui plantait lors de l'exécution à l'instruction "push_back".En copiant le contenu d'une de mes sources .cpp dans une autre, j'ai gagné un peu de place et à partir de là,l'instruction "push_back" est passé comme une lettre à la poste.
 
Aujourd'hui, jai dû augmenter la taille de mon prog en ajoutant des lignes de codes et ça replante à nouveau,au même endroit.
Je crois que j'ai en fait un problème de place sous dev-c++ et que j'ai atteint les limites de dev-cpp.
Comment puis-je donc faire et est-ce que ça vient bien de là?
Merci et bonne journée


Message édité par smag le 27-01-2005 à 00:15:56
mood
Publicité
Posté le 27-01-2005 à 00:05:42  profilanswer
 

n°966920
TotalRecal​l
Posté le 31-01-2005 à 16:12:19  profilanswer
 

euh devcpp ou pas, GCC c'est quand même un vrai compilateur qui fonctionne à peu pres, moi je douterai plutôt du programmeur, t'es sûr que t'aurais pas écris un truc ou 2 pas trop dans les normes ?
Et c'est quoi planter ? Il compile correctement (pas de warning, et tu es sûr de ton code), mais plante à l'éxécution ?
Tu compiles en debug, release ? Tu fais une vraie éxécution ou un débuggage (le debuggeur de devcpp est assez pourri lui)
Tu as essayé avec un autre compilo (gratuitement, au moins pour test, en téléchargeant CodeWarrior ou BorlandC++) ?


Message édité par TotalRecall le 31-01-2005 à 16:12:51

---------------
Topic .Net - C# @ Prog
n°966924
TotalRecal​l
Posté le 31-01-2005 à 16:13:36  profilanswer
 

(ou vc++.net qui est gratos)


---------------
Topic .Net - C# @ Prog
n°966975
HelloWorld
Salut tout le monde!
Posté le 31-01-2005 à 16:50:50  profilanswer
 

"ça plante" certes, mais plus exactement c'est quoi (et où) l'erreur ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°967105
smag
Posté le 31-01-2005 à 18:02:41  profilanswer
 

Dans la version 5 de dev-cpp ça plante pas mais le debugger est pourri.
Dans la version 4 de dev-cpp ça plante à l'instruction push_back en me faisant une segmentation default et le debugger que j'utilise alors c visual insight debugger avec une interface pas trop mal.
est-il possible d'utiliser un autre debugger plus complet et performant sous dev-cpp?
 
Merci pour votr aide

n°967110
HelloWorld
Salut tout le monde!
Posté le 31-01-2005 à 18:04:22  profilanswer
 

Citation :

segmentation default


mais c'est Devcpp qui plante ou ton appli a l'exécution ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°967117
Taz
bisounours-codeur
Posté le 31-01-2005 à 18:07:56  profilanswer
 

c'est quoi ces conneries de programme trop gros ?

n°967121
smag
Posté le 31-01-2005 à 18:13:00  profilanswer
 

TotalRecall a écrit :

(ou vc++.net qui est gratos)


 
Mais dans la version de démonstration il n'y a pas d'interface graphiqu e pour le debugger si je ne me trompe?

n°967124
smag
Posté le 31-01-2005 à 18:14:09  profilanswer
 

Quand je passe sous le debugger il me dit segmentation default et quand je le lance direct j'ai la fenêtre dev-cpp va fermer car il se plante

n°967127
Taz
bisounours-codeur
Posté le 31-01-2005 à 18:14:28  profilanswer
 

t'as pas l'impression d'avoir le syndrôme du débutant: c'est pas moi c'est compilateur ?

mood
Publicité
Posté le 31-01-2005 à 18:14:28  profilanswer
 

n°967156
smag
Posté le 31-01-2005 à 18:29:43  profilanswer
 

Si je pensais que ça venait du compilo, j'aurai pas laissé de message et vu que pour l'instant j'arrive à le lancer sous la version 5, je ne serais pas en train d 'essayer de comprendre d'où vient l'erreur, que cela vienne de moi ou d'un espace sur la pile.
Voilà monsieur.
P'être bien que je vais finir par trouver l'erreur moi même car mon prog ne me donne pas les résultats escomptés...

n°967161
Taz
bisounours-codeur
Posté le 31-01-2005 à 18:35:52  profilanswer
 

le problème c'est ton code. Balance

n°967183
smag
Posté le 31-01-2005 à 18:56:03  profilanswer
 

ça plante à chaque instruction push_back où quelle soit.

n°967185
Taz
bisounours-codeur
Posté le 31-01-2005 à 19:00:50  profilanswer
 

Code :
  1. #include <vector>
  2. int main()
  3. {
  4.   std::vector<int> vi;
  5.   vi.push_back(3);
  6. }


 
ça plante ?

n°967796
smag
Posté le 01-02-2005 à 00:21:22  profilanswer
 

J'crois avoir ciblé beaucoup mieux le pb:
 
J'ai pris un prog qui marche ( qui au début me plantait sur push_back) mais qui ensuite suite à différentes manip ne plantait plus jamais.
 
 
j'execute donc le code sans pb, dépassant largement l'instruction push_back mais m'apperçoit que j'ai fait une faute de frappe.
Je modifie mon source, je recompile et là bing, et là ça se plante sur push_back.
Je reviens en arrière, cad que je remets '=' , je recompile et là ça plante sur push_back alors que cinq minutes auparavant ça marchait nickel et ça fait des jours que ça passait comme ça.
 
Il est à noter que push_back fait une insertion dans la mémoire heap donc j'ai peut être un pb de place!!!!
 

n°967799
Taz
bisounours-codeur
Posté le 01-02-2005 à 00:22:33  profilanswer
 

rien à voir. T'as tout simplement corrompu ta pile, et en fonction de ce que tu fais et de ton code, ça fout en l'air ton programme à tel ou tel endroit.

n°967837
smag
Posté le 01-02-2005 à 00:40:38  profilanswer
 

Taz a écrit :

rien à voir. T'as tout simplement corrompu ta pile, et en fonction de ce que tu fais et de ton code, ça fout en l'air ton programme à tel ou tel endroit.


 
Non non non c pas possible ce que tu dis car je fais exactement le même code que y'a cinq minutes, en passant au même endroit les variables sont alimentées dans le même ordre de la même façon et là ça ne passe plus!!!  

n°967853
Taz
bisounours-codeur
Posté le 01-02-2005 à 01:09:24  profilanswer
 

si tu le dis. T'as l'air d'avoir beaucoup de certitude pour quelqu'un qui s'acharne irrationnellement sur vector<>::push_back qui est sans doute LA fonction membre la plus utilisée de STL.

n°967935
smag
Posté le 01-02-2005 à 09:41:36  profilanswer
 

Mais si j'ai corrompu ma pile, je fais comment alors?

n°967936
skeye
Posté le 01-02-2005 à 09:42:53  profilanswer
 

smag a écrit :

Mais si j'ai corrompu ma pile, je fais comment alors?


Tu commences par débugger le code existant avant de continuer?


---------------
Can't buy what I want because it's free -
n°967941
HelloWorld
Salut tout le monde!
Posté le 01-02-2005 à 09:49:45  profilanswer
 

Recherche les endroits où tu utilises des pointeurs...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°967945
smag
Posté le 01-02-2005 à 09:52:09  profilanswer
 

Je comprends rien.Comme tu l'as dit je suis débutante.
Je sais où j'ai des pointers.Peut être est-ce en arrêtant brutalement le prog que y'en a un qu'à pas été détruit comme il fautr et que j'ai des fuites de mémoire? mais comment je fais concrètement pour que ça remarche à nouveau?
 
Ps:
j'ai pris le même source sous dev-cpp VERSION 5 et il passe sans pb...
alors qu'il plante toujours sous DEV-C4

n°968002
bjone
Insert booze to continue
Posté le 01-02-2005 à 10:27:11  profilanswer
 

ton source pliz.

n°968176
HelloWorld
Salut tout le monde!
Posté le 01-02-2005 à 12:09:02  profilanswer
 

Le probleme avec la corruption mémoire c'est que ca fait planter ailleurs qu'à l'endroit de la corruption. Analyse bien l'utilisation des pointeurs...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°968183
smag
Posté le 01-02-2005 à 12:15:35  profilanswer
 

bjone a écrit :

ton source pliz.


mon source il est super long  alors commment je fait?
et les pointeurs sont nikel  
et le prog ne plante pas du tout sous dev-cpp version 5
 
Sous microsoft visual basic y'a possiblité de modifier la taille de la pile.
Sus dev-c++ version 4, la pile par dfautl doit être trop petite

n°968184
Taz
bisounours-codeur
Posté le 01-02-2005 à 12:18:17  profilanswer
 

c'est ton programme qui est buggé, tu peux le compilé avec ce que tu veux, il plantera tôt ou tard. Arrête de chercher de ce côté là. Vérifie tes pointeurs, compile avec le niveau maximal de warning.

n°968215
HelloWorld
Salut tout le monde!
Posté le 01-02-2005 à 13:14:54  profilanswer
 

Je dirais plutot que tu as la chance que ça plante sous devcpp 4. Essaye de trouver où et de réduire petit à petit ton programme jusqu'à avoir un petit exemple qui plante.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°968228
smag
Posté le 01-02-2005 à 13:46:14  profilanswer
 

Laissez tomber je crois que vous n'avez pas bien saisi.
D'autre part dans une autre forum, on m'a assuré qu'il s'agissait d'un pb de pile.
En effet, le programme passe sans pb un nb incalculable de fois sous n'importe quel autre compilateur. ( Le code est issu d'un bouquin)
 
Seule la version 4 de dev-cpp n'arrive pas à le gérer et le fait planter lors du premier accès à la mémoire heap quel qu'il soit ( aie essayé différents chemins)
 
Donc je vais continuer à bosser sur la version 5 puisque là pas de pb du tout
Merci à tous et bonne journée
 

n°968503
HelloWorld
Salut tout le monde!
Posté le 01-02-2005 à 15:37:47  profilanswer
 

Moui san doute. Sache quand même que heap c'est le tas, c'est indépendant de la pile (stack) qui sert à autre chose.
Y'a 2 possibilités pour résoudre un problème de dépassement de mémoire : repousser la limite en donnant plus de mémoire, ou résoudre le problème.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°968623
smag
Posté le 01-02-2005 à 17:22:26  profilanswer
 

ok merci mais comment repousser les limites?

n°968639
bjone
Insert booze to continue
Posté le 01-02-2005 à 17:41:00  profilanswer
 

:lol: désolé.
 
je crois que HelloWorld voulais que tu sélectionnes "ou résoudre le problème" dans son post.

n°968698
Taz
bisounours-codeur
Posté le 01-02-2005 à 19:26:31  profilanswer
 

smag a écrit :

ok merci mais comment repousser les limites?


vas voir sur tes copains sur ton autre forum pour ton problème. Nous ont te dit que tu corromps ta pile. Y a pas de limite à repousser : tu corromps ta pile .|

n°968914
HelloWorld
Salut tout le monde!
Posté le 02-02-2005 à 01:35:50  profilanswer
 

On va essayer une autre image...
"Je comprends pas je tombe souvent en panne d'essence"
"ah oui c'est parce qu'il y a une fuite dans votre réservoir"
"que faire ?"
"2 solutions : colmater la fuite ou faire le plein plus souvent"
"super, merci! je vais de suite faire le plein"


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°968927
Taz
bisounours-codeur
Posté le 02-02-2005 à 08:15:51  profilanswer
 

j'ai eu un aperçu du code:
- c'est pas compilé en -Wall
- y a des pointeurs dans des tas de classes : pas d'operator= ni de constructeur de recopie. Les pointeurs ne sont pas initialisés dans les constructeurs, où quand il le sont, c'est  conditionnellement

n°969443
smag
Posté le 02-02-2005 à 14:41:49  profilanswer
 

HelloWorld a écrit :

On va essayer une autre image...
"Je comprends pas je tombe souvent en panne d'essence"
"ah oui c'est parce qu'il y a une fuite dans votre réservoir"
"que faire ?"
"2 solutions : colmater la fuite ou faire le plein plus souvent"
"super, merci! je vais de suite faire le plein"


Merci j'avais compris au prime abord.C'est pas parce que je débute en c++ qu j'comprends pas les "subtilités" de la langue française!!
 
Juste que j'arrive à identifier le pb alors voilà quoi!!

n°969446
smag
Posté le 02-02-2005 à 14:44:32  profilanswer
 

Taz a écrit :

j'ai eu un aperçu du code:
- c'est pas compilé en -Wall
- y a des pointeurs dans des tas de classes : pas d'operator= ni de constructeur de recopie. Les pointeurs ne sont pas initialisés dans les constructeurs, où quand il le sont, c'est  conditionnellement


 
En mode debuggage, j'ai suivi le prog pas à pas et tous le spointerus sont initailisés à zéro.Des fiis je me demander comment il est vrai, mais c le cas.
 
Pour le reste du message j'ai pas tout compris.COmpilé en -wall cad?
pas d'operatuer = ni de constructeur de recopie???

n°969456
bjone
Insert booze to continue
Posté le 02-02-2005 à 14:54:29  profilanswer
 

arf pour tes pointeurs, si tu n'as rien mis dans ton constructeur (mise à NULL/0 explicite), si ça passe en debug c'est le hasard (c'est pas dis que ça passe en release).
 
pour l'opérateur = et le constructeur de recopie, as-tu eu des cours de C++ ?
 

n°969482
smag
Posté le 02-02-2005 à 15:15:02  profilanswer
 

bjone a écrit :

arf pour tes pointeurs, si tu n'as rien mis dans ton constructeur (mise à NULL/0 explicite), si ça passe en debug c'est le hasard (c'est pas dis que ça passe en release).
 
pour l'opérateur = et le constructeur de recopie, as-tu eu des cours de C++ ?


 
en fait j'ai du lire un peu vite le code car ça passe en release.
Effectivent, j'apprnds le c++ par ce bouquin et donc si je ne me trompe l'opératur égal doit être déclaré dans une méthode membre ou bien sa déclaration fait partie de la STL ou bien je raconte n'importe quoi.
Le constructeur de  copie je connais mais pas de recopie...

n°969527
smag
Posté le 02-02-2005 à 15:48:58  profilanswer
 

Et puis c facile de critiquer le code écrit par les autres!!!
On a chacun sa manière de coder et en l'occurence ce code est issu d'un bouquins qui a été conseillé par ce site pour se familisariser avec les premières bases du C++.
Certes, je conviens qu'il n'est certainement pas parfait, mais grâce à ce bouquin j'ai pu me lancer dans la découverte d'un nouveau langage en y prenant du plaisir et en ayant envie d'en apprendre un plus.
 
Au départ, avant de connaître la mutiplication, on faisait 2+2+2 au lieu de faire 3*2...chaque chose en son temps!!!
 
Ainsi, au lieu de dire que c codé de n'importe quelle façon, ce qui n'avance pas à grand chose de dire ça,vous n'avez qu'à me donner des explications beaucoup détaillées et simples à comprendre et si vous n'en avez le courage ( à moins que ce soit un manque de capacité?), veuillez gardez vos commentaires pour vous.
 
 
Je remercie cependant les rares qui ont bien voulu m'accorder un peu de leur temps et de leur savoir pour me faire avancer...

n°969611
bjone
Insert booze to continue
Posté le 02-02-2005 à 16:43:04  profilanswer
 

oki, c'est pas ça mais:
1) si tu as des pointeurs dans ta classe
2) et que dans le destructeur tu détruits des objets pointés par les pointeurs membres
3) et que tu n'as pas implémenté l' operator = et le constructeur de recopie
 
=> tu crasheras probablement lors d'un push_back() ou autre opération sur un container de la STL.


Message édité par bjone le 02-02-2005 à 16:44:39
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  pb àl'execution car prog trop gros pour DEV-CPP

 

Sujets relatifs
Comparatif sur l'interet des languages de progDev-Cpp
changer de user durant l'execution d'un script[Débutant] pb execution java script
Temps d'éxécution comparable?temps d'exécution en millisecondes?
cryptage en CPPprobleme dev-C++
verification prog C++ 
Plus de sujets relatifs à : pb àl'execution car prog trop gros pour DEV-CPP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR