C++ : HELP ME - variable changeant toute seule - C++ - Programmation
Marsh Posté le 13-01-2005 à 22:40:31
bon, on va dire que t'as dis C++ alors que tu voulais dire C
Code :
|
=>
Code :
|
Cela dit je déconseille d'utiliser le langage SMS dans un langage de programmation, enfin c'est toi qui vois.
Code :
|
A partir de la, c'est la cata complete. Comme tu le sais, il y a des variables dites locales, et ces variables sont détruites lorsque l'on quitte la fonction les ayants crée. Hors, la que voyons nous ? Que tu conserve l'adresse d'une de ces variables locales (l'adresse de nouvo, pour etre plus précis). Ce qui n'est pas bon, du tout.
Bref, ce qu'il te faut faire, c'est allouer dynamiquement de la mémoire :
Code :
|
La.
Par contre, si on malloc d'un coté, faudra penser a libérer de l'autre coté. Je corrige pas la suite car tout ces pointeurs voltigeant dans tous les sens me cassent la tete, et que j'ai pas trop envie de jouer au mikado ce soir. Essaye de deblayer un peu tout ca, que diable.
Marsh Posté le 13-01-2005 à 23:22:48
MERCHIIIIIIIII beaucoup
j'avais effectivement oublié l'alloc dynamique
j'ai juste eu à ajouter :
brik *nouvo = (brik*) malloc(sizeof(brik));
et le programme semble fonctionner correctement
pour l'histoire du C/C++, oui je fais du C mais j'écris tjrs en *.cpp donc c un peu du mélange^^
voila qui resout le pblem principal, mais je ne comprends toujours pas comment les "printf" de mon ancien programme (certes tout buggé ms le pblem n'est plus là^^) faisaient pour changer la valeur de "pile->c"...
je laisse le prog erronné à la meme adresse si qqun peut mexpliker le dernier ptit probleme
prog corrigé :
***effacé***
Marsh Posté le 13-01-2005 à 23:38:43
dark86 a écrit : MERCHIIIIIIIII beaucoup |
bin faut savoir que les variables locale sont stockée sur ce que l'on appelle 'la pile'. Quand tu appeles une fonction, tu copie les parametres sur la pile (+d'ot trucs que je developpe pas). Bref, la ou avant il y avait ta variable locale, il y a peut etre apres d'autre var locale que se sont foutus dessus, ou des parametres, ou n'importe quoi....
Marsh Posté le 13-01-2005 à 22:33:20
Bonjour,
j'ai essayé de faire un petit programme en C++ permettant de vérifier le parenthésage d'une chaîne de carractères en utilisant une pile (liste chainée) mais j'ai deux problemes :
- le dépilage ne marche pas
- j'ai une variable qui voit sa valeur changer lors de l'exécution d'une commande "printf" de celle-ci , ce que je ne savais pas possible ...
mon programme:
***effacé***
si qqun peut m'éclairer sur le changement de valeur de la variable, et ensuite sur une probable erreur dans le dépilage....
merchiii
Message édité par dark86 le 31-08-2005 à 14:36:26