[Langage C] suppression de définitions de variables impossible
Hors ligneBergie Le 25/09/2006 à 11:47 Profil de Bergie Configuration de Bergie

Bonjour,



J ai un problème concernant la suppression de définitions variable.

J'ai tapé un code permettant d'automatiser le traitement d'images obtenues à partir de microscopes (Microtomographie DUAL BEAM pour les connaisseurs).

Ayant modifié le code source et éclairci un peu tout ca, il me reste pas mal de variables que j'avais déclarées et que je n'utilise plus.



Je décide donc de nettoyer tout ca, je supprime les déclarations (les variables ne sont pas du tout utilisées dans tout le code).

Lors de la compilation, pas de problème, tout se passe bien, mais lors de l'exécution, le programme s'arrête sans analyser les images. (meme pb si je mets ces variables en commentaires)



Lorsque je renomme les variables ou que je les enleves du champ de commentaires (qui ne sont pas utilisées je le répète) cela refonctionne.



J'avais aussi le problème inverse, je ne peux plus déclarer de variables supplémentaires dans ma fonction main, je suis obligé de déclarer en variable globale.



Si quelqu'un a une idée pour pouvoir supprimer ces définitions inutiles, cela m'aiderait vraiment (juste histoire d'avoir une source plutot propre). (Inutile de me dire d'utiliser les variables définies en tant que globales dans la fonction main, en remplacant ainsi les autres, vu que je n ai plus de variables globales...)



Encore merci

Bergie
Hors ligneAnthony Le 25/09/2006 à 21:01 Profil de Anthony Configuration de Anthony

Admin
Salut,

un petit exemple de code peut-être ?
--

Hors ligneBergie Le 25/09/2006 à 21:10 Profil de Bergie Configuration de Bergie

J'avais pensé mettre le code, mais il est assez long et je ne pense pas que ce soit très intéressant de poster 500 lignes de code brut.
Je le mets en disponibilité téléchargement à cette adresse :
http://www.infotuto.com/Pb_Variables.c

Les variables posant problème (que je ne peux pas supprimer) sont les suivantes (dans le main) :
  unsigned long imageWidth;          // Image width
  unsigned long imageHeight;         // Image height    
  unsigned short bitPerPixel;        // = 8 for 256 color BMP image
  unsigned short planeNumber;        // Number of planes : = 1 for 256 color images

  unsigned int File_Testing;

Et peut etre encore qques unes que je n'ai pas repérées.

Merci de votre aide
Hors ligneBuckman Le 28/10/2006 à 00:46 Profil de Buckman Configuration de Buckman

Bonsoir,

Il est très probable qu'il y ait des erreurs de mémoire dans ton code.

Lorsque tu ajoutes des variables, cela reserve de la mémoire (sur la pile d'execution). Le fait de les retirer libère donc cet espace mémoire.
Imagine maintenant qu'il y ait à un endroit du programme ce que l'on appelle un "débordement de mémoire", c'est à dire lorsqu'on deborde d'une zone allouéeou d'un tableau. Cela écrit dans la mémoire juste a coté. A ce moment là, il n'y a pas de problème car tu as ces quelques variables qui prennent de la place sans etre utilisées. Si tu les retires, maintenant le débordement mémoire écrase d'autres variables que tu utilises vraiment...

Je te conseil de revoir tes calloc, parcours de tableaux et autres pointeurs, ou bien si tu est sous Linux, utilises le programme Valgrind.
Hors ligneBergie Le 28/10/2006 à 00:51 Profil de Bergie Configuration de Bergie

Bonjour

Merci de la réponse, mai sjavais complètement oublié de poster la solution sur ce forum.
J'ai en effet trouvé un problème, un tableau de caractère déclaré non pas en char variable[45] mais en char *variable.
Cela faisait planter lorsque j'enlevais mes variables, surement à cause de ce que tu as expliqué ...

Merci
Bergie
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels