Uninitiliazed memory read...

Uninitiliazed memory read... - C - Programmation

Marsh Posté le 25-08-2004 à 17:05:35    

J'ai des problemes avec un programme au boulot..
Donc mon chef m'a demandé de passer Purify...
Pas mal de choses dans le rapport.. dont le titre..
 
Vu que la chose se reproduit presque 1000 fois, j'ai voulu creuser le probleme...
 
Donc l'endroit indiqué est :  
-> if (LocaliseStrings) {
  stmp = locals ;
  LENGTH =  strlen(locals)
}
 
LocaliseStrings est défini dans un point h inclus dans le programme..
Or dans le point h, il est défini en extern..
impossible de trouver ailleurs une définition..
De plus, il n'est pas initialisé par défaut...
 
Donc je me suis dit qu'en l'initialisant à 0 ca enleverait l'erreur.. mais ou l'initialiser..?
 
A moins que cela ne soit un autre probleme...
Help!

Reply

Marsh Posté le 25-08-2004 à 17:05:35   

Reply

Marsh Posté le 25-08-2004 à 17:15:15    

[type] LocalistStrings = 0;
 
mais si ton programme compile (et surtout est lié) c'est forcément qu'il est définit ailleurs.


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 25-08-2004 à 17:18:24    

Je suis entierement d'accord BlackGoddess...  
Le probleme, c'est que je n'arrive pas a trouver ou... Et quand je fais une recherche avec VC++.. je ne trouve pas!
Du coup, je n'arrive pas a enlever les warnings de Purify...

Reply

Marsh Posté le 25-08-2004 à 17:27:47    

ton code est peut-être un .so, et la définition de la variable serait dans le programme principal ? (je ne sais pas si c'est possible)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 25-08-2004 à 18:11:16    

Citation :

Or dans le point h, il est défini en extern..  
impossible de trouver ailleurs une définition..


Ben il est sûrement exporté par une dll.
Purify te dit que LocaliseStrings n'est pas initialisé (j'adore les devinettes...) ?

Citation :

De plus, il n'est pas initialisé par défaut...


Comment tu le sais ? S'il est dans une dll, il y a fort à parier pour que ce soit une variable initialisée. Fait passer ton exe par dependency walker, tu verras s'il importe ce symbole d'une dll.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 25-08-2004 à 20:44:30    

Purify me dit "uninitialized memory read" qd il passe sur la ligne if(LocaliseString) ...
donc c pour ca que j'ai fait cette déduction..
Comment le corriger alors..?

Reply

Marsh Posté le 25-08-2004 à 22:07:23    

Faut déjà savoir q'il a raison ou tord.
T'as trouvé où est défini LocaliseString ? T'as cherché s'il est pas exporté par une dll ?

Reply

Marsh Posté le 26-08-2004 à 10:41:38    

J'ai passé mon exe au programme que tu m'as indiqué..  
C'est super compliqué... je n'ai pas vu mon LocaliseStrings.. mais bon étant donné qu'il y a beaucoup de dll...
De plus, si c'était une dll... pourquoi je ne trouve rien dans msdn qui me parle de ca...?
 
je suis un peu perdu la...

Reply

Marsh Posté le 26-08-2004 à 10:56:21    

ben33 a écrit :

De plus, si c'était une dll... pourquoi je ne trouve rien dans msdn qui me parle de ca...?


qui parle de quoi ?
http://msdn.microsoft.com/library/ [...] raries.asp
A partir du fichier où est déclarée exctern ta variable, tu en déduis la lib, donc la dll où il faut regarder... En classant alphabétiquement les symboles et en enlevant le name mangling si c'est du C++ (bouton C++), ça devrait aller...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed