Accueil > Forum > > > > Débordement de pile
Débordement de pile
mercredi 3 août 2005 à 18:11:09 |
Débordement de pile

la_gavorade
|
Salut à tous,
J'ai un problème inédit (pour moi...).
Dans un petit programme tout bête, j'ai un message "Débordement de pile" dès que j'arrive à la ligne de code SetLength d'un de mes tableaux dynamiques.
C'est un array of array of double, les dimensions i et j sont définies sur les deux lignes précédentes d'après des paramètres calculés précédemment, mais de toute façon au grand max c'est du 25x50... Pas de quoi fouetter un chat, non plus...
Et bien si, pourtant, parce que quand je force les paramètres pour avoir un tout petit tableau (du style 10x5), et bien là l'erreur disparaît...
Et pourtant des tableaux dynamiques, j'en utilise sans arrêt (j'aime bien ça, désolé...) dans tous mes programmes, de dimensions parfois assez conséquentes et sans aucun problème !
Je suis allé voir sur le forum si y'avait des messages avec les mots clés "débordement de pile" ou "EStackOverflow", malheureusement pas grand chose à se mettre sous la dent, en rapport avec mon cas, je veux dire !
Et l'aide Delphi est pas bcp plus prolixe...
Bref, il ne me reste plus qu'à me tourner vers vous, les experts du debusquage d'erreurs à la c...
Merci d'avance !
Thomas.
|
|
mercredi 3 août 2005 à 18:30:18 |
Re : Débordement de pile

ni69
|
Pourrait-on avoir le code qui fait planter s'il te plait ? @+ Bonne Prog' Nico [ www.ni69.new.fr]
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! 
|
|
mercredi 3 août 2005 à 23:00:43 |
Re : Débordement de pile

sim51
|
Salut,
Moi j'ai déjà eu ce problème te je l'ai régle en changenat un paramètre
dans l'option du projet, là où tu peux mettre une icone pour le projet,
mettre le nom du projet ...., il y a aussi, dans un des onglet, un
endroit où tu peux changer la taille de mémoire réservé sous windows
pour ton programme. Pour moi cela avait corrigé le problème, j'espère
qu'il en sera de même.
Bonne continuation. N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
|
|
jeudi 4 août 2005 à 09:10:04 |
Re : Débordement de pile

la_gavorade
|
Oups, désolé pour la fausse manip...
Bon, mon code qui fait planter va pas avancer à grand chose, enfin je pense...
lengthi := 3+NbTz ;
lengthj := 4 + (6*NbChecked) ;
SetLength(Matrice,lengthi,lengthj) ; // C'est la ligne qui fait planter
// NbTz et NbChecked sont définis bien avant et bougent plus, quand je fais une exécution pas à pas ces deux variables sont bien calculées, typiquement de l'ordre de 20 à 30 toutes les deux, et hop, à l'instruction SetLength, "Débordement de Pile" !!!
Dis-moi, Sim51, qu'est-ce que tu avais mis comme taille, aussi ? Le double, le triple ???
Merci pour votre aide !
|
|
jeudi 4 août 2005 à 09:12:31 |
Re : Débordement de pile

Delphiprog
|
Sim51 : augmenter la taille de la pile règle la conséquence mais pas la cause. Ce n'est pas une bonne démarche à long terme car le problème peut resurgir un jour ou l'autre de manière aléatoire et là, c'est le truc du genre con à déboguer.
la_gavorade : il faut que tu nous donnes au moins de quoi analyser ton problème si tu veux obtenir une réponse. L'exception EStackOverflow pouvant se produire dans de multiples cas, il est normal que l'aide de Delphi ne soit pas prolixe sur le sujet. Rien que pour cette exception, il faudrait écrire un livre sur la manière de bien coder et lister tous les pièges à éviter.
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
|
|
jeudi 4 août 2005 à 09:49:53 |
Re : Débordement de pile

la_gavorade
|
Alors, allons-y, plusieurs points :
1) Pour Sim51, j'ai augmenté la taille minimale de 4,000 à 10,000 et/ou la taille maxi de 100,000 à 1,000,000... et ça a rien changé. Enfin si, ça a changé quand même un truc : dans certains cas (augmentations de tailles intermédiares, genre 8,000 et 500,000) j'ai l'erreur EStackOverflow après quelques secondes où ça rame au lieu d'immédiatement, dans d'autres cas (pour l'augmentation max, cad 10,000 et 1,000,000), j'ai plus le message d'erreur, mais ça bugge toujours et j'arrive directement à la fenêtre CPU.
Bref, c'était pas la bonne sulution dans mon cas, et de toute façon comme le dit DelphiProg, ça règle les conséquences mais pas la cause.
2) Comme vous avez pu le constater, je suis au boulot, et LE poste à accès Internet est à partager entre 130 personnes (bah oui, y'a encore des entreprises qui fonctionnent comme ça... Désolé...) c'est pour ça que je réponds aux messages avec plusieurs heures de retard. Par contre la messagerie perso est accessible de chaque poste, donc si vous voulez que je sois plus rapide dans mes réponses, ou que je m'étende plus dans mes explications, faudra discuter par mail. Ca va un peu à l'encontre de l'esprit d'un forum, mais j'ai pas trop le choix.
Mon adresse est perso.tgavory@gtt.fr
Voilà voilà, à+, merci à tous.
|
|
jeudi 4 août 2005 à 17:25:19 |
Re : Débordement de pile

sim51
|
Re,
Je suis d'accord que ma solution peut résoudre les conséquences mais
pas les causes, toutefois cela dépend du code, car lorsque j'ai eu ce
problème, la cause et la conséquence était confondu, cela se
produisait lorsque je construisais un arbre dont chaque parent
avait douze fils et ceux avec une profondeur qui pouvait atteindre les
500.
Bon si cela n'a pas résolu ton problème, je ne sais pas quoi te dire.
Désolé et bonne continuation N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
|
|
jeudi 4 août 2005 à 20:12:24 |
Re : Débordement de pile

neodelphi
|
Ce problème arrive la pluspart du temps lorsque qu'une fonction
s'appelle elle-même, ou lorsque ton programme "entre" dans plusieurs
fonction sans en sortir... Le truc c'est que le programme travail avec
une pile, c'est en gros un tableau qui contient la liste des fonctions
dans laquelle il entre. Lorsque tu entre dans une fonction il ajoute un
élément à la liste, et lorsque tu en sort, il retire un élément. Si tu
entre dans trop de fonctions, ta pile prend une taille énorme et
l'erreur de débordement de pile se produit. Donc si tu utilise une
fonction qui s'appelle elle même, vérifi qu'il y à bien un moment ou tu
peut en sortir...
Augmenter la taille de la pile ne résout pas le problème, ton programme
met juste plus de temps à remplir la pile comme tu as pu le constater.
neodelphi
|
|
Cette discussion est classée dans : problème, tableaux, pile, dynamiques, débordement
Répondre à ce message
Sujets en rapport avec ce message
Problème de tableaux... [ par orelien ]
Bonjour,J'aimerais créer un tableau à deux dimensions et y insérer des chiffres (des entiers).Les valeurs horizontales sont des entiers et celles de l
perdu avec les tableaux dynamiques [ par marutska ]
Boujour !!Je fais depuis peu de la programmation objet, et je dois dire que je mis perd !j'ai crée 2 objets TLien et TSommet. TSommet a comme atribut
problème de génération de tableaux et de graphe [ par carlos ]
Salut à tousje viens vers vous car j'ai tout essayé et avec le peu d'expérience que j'ai je ne trouve pas la solution....Je m'explique, j'ai une appl
Concaténer deux tableaux dynamiques [ par ni69 ]
Bonjour,Je cherche depuis un petit moment le moyen de concaténer deux tableaux dynamiques (dynamic array of char).Existe-t-il une fonction simple du g
Tableaux dynamiques [ par fabiin ]
Salut !je cherche un exemple complet sur l'utilisation des tableaux dynamiquesmerci par avance@+Fabs<img src=/imgs2/smile.gif border=0 align="absmiddl
tableaux dynamiques [ par fabiin ]
Salut !vala, g un petit problème avec les tableaux dynamiques,au debut de mon progs, je redimmension mes tableaux kom ca:setlength(machin,nmbr);jusque
Problème de mot de passe avec base de données ACCESS sous DELPHI [ par Fox ]
Bonjour,Mon logiciel utilise une base de données ACCESS, le problème est que lorsque j'éxécute mon logiciel, une fenetre s'ouvre et me demande un mot
Débutant : Problème boucle for... [ par the.snake.plisken ]
Je débute et j'aimerais faire une boucle comme en visual basic du type : for a = 1 to 300 step 3 mais sous delphi, je n'arrive pas à placer le step qu
problème d'impréssion [ par ferhat ]
j'ai un problème d'impréssion qu'on j'utilise une imprimanteepson lq 2080 l'impréssion d'un état de format libre par example les dimontion de la page
problème d'impréssion [ par ferhat ]
j'ai un problème d'impréssion qu'on j'utilise une imprimanteepson lq 2080 l'impréssion d'un état de format libre par example les dimontion de la page
Livres en rapport
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|