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

  FORUM HardWare.fr
  Programmation
  C++

  Variables qui se vide toute seule

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variables qui se vide toute seule

n°1198496
bkadoum
Posté le 13-09-2005 à 14:20:04  profilanswer
 

J'ai un problème assez mystérieux dans mon programme. En vérifiant certaines variables en mode déboguage, j'ai remarqué qu'elles étaient mise à zéro pour aucune raison valable. Car en effet, elles se vide à un moment où je ne fais aucun traitement dessus. En fait ces variables se vident dans des fonctions où elles ne figurent même pas :p (Je précise que ce sont des variables membres d'un objet global)
 
Voilà, je ne donne pas d'illustration de code pour l'instant car ce que je voudrais savoir, c'est si à première vue c'est un problème connu. Est-ce que ça vient du compilateur (j'utililse Visual C++)? D'une surcharge quelconque? C'est un programme assez complexe, je me souviens avoir agrandit la mémoire allouée pour les headers précompilés.

mood
Publicité
Posté le 13-09-2005 à 14:20:04  profilanswer
 

n°1198499
christophe​_d13
L'efficacité à tout prix.
Posté le 13-09-2005 à 14:23:12  profilanswer
 

Par défaut, VC met les variables en zéro en mode débug et en indéterminé en mode Release (souvent 0xC0C0C0C0).
 
Aïe, je me vide... Vite, des WC !


Message édité par christophe_d13 le 13-09-2005 à 14:23:55

---------------
http://www.ikalizer.fr
n°1198541
bkadoum
Posté le 13-09-2005 à 14:51:04  profilanswer
 

Mouais sans rire, ces variables se vident. Mais bien sûr avant ca elle étaient pleine...
En mode release ca me fait des bugs vu que ma variable est à 0 alors qu'elle devrait contenir une valeure non nulle.

n°1198614
bkadoum
Posté le 13-09-2005 à 15:41:02  profilanswer
 

Bon d'accord j'aurais dût appeler ce sujet:
 
Variable qui se met à zéro toute seule. Vide n'est pas le bon terme ok. Maintenant mon sujet fait pas sérieux :/
 
N'empêche que je cherche là je trouve pas pourquoi ça fait ça c'est invraisemblable! Personne n'a une idée lumineuse?


Message édité par bkadoum le 13-09-2005 à 15:41:57
n°1198643
bkadoum
Posté le 13-09-2005 à 15:54:46  profilanswer
 

Je mes un bout de code pour vous chauffer:
 

Code :
  1. void UpdateCharacter(Character *pCharacter)
  2. {
  3. int i;
  4. Str RequestString;
  5. RequestString = (Str)"SELECT * FROM CharCombat WHERE MinCS <= " + pCharacter->GetStat2(COMBAT_SPEED)->score + " AND MaxCS >= " + pCharacter->GetStat2(COMBAT_SPEED)->score;
  6. SQLExecDirect(DataBase.Gethstmt(0), (SQLCHAR *)RequestString.Get(), SQL_NTS);
  7. SQLFetch(DataBase.Gethstmt(0));
  8. SQLGetData(DataBase.Gethstmt(0), 4, SQL_C_SLONG, &pCharacter->GetCombat()->MaxDistance, 0, NULL);
  9. for (i = 0; i < TOTAL_COMBAT_PHASE; i++)
  10.  SQLGetData(DataBase.Gethstmt(0), i + 5, SQL_C_SLONG, &pCharacter->GetCombat()->action[i], 0, NULL);
  11. SQLFreeStmt(DataBase.Gethstmt(0), NULL);
  12. }


 
Cette fonction met à jour des variables de mon objet Character depuis une base de donnée.
La variable qui est mise à zéro n'est pas traitée dans cette fonction et ne figure pas dans le code (c'est ça le plus bizarre) mais elle fait partie d'une structure membre de la classe Character. Apparament d'après mes tests, la variable se met à zéro au moment où j'appel SQLFetch.

n°1198670
blackgodde​ss
vive le troll !
Posté le 13-09-2005 à 16:05:36  profilanswer
 

ca serait pas un débordement qui écrirait dans ta mémoire à l'emplacement de ta variable par hasard ?


Message édité par blackgoddess le 13-09-2005 à 16:05:57

---------------
-( BlackGoddess )-
n°1198707
skeye
Posté le 13-09-2005 à 16:35:57  profilanswer
 

blackgoddess a écrit :

ca serait pas un débordement qui écrirait dans ta mémoire à l'emplacement de ta variable par hasard ?


en tout cas ça y ressemble...[:dawa]


---------------
Can't buy what I want because it's free -
n°1198758
bkadoum
Posté le 13-09-2005 à 17:37:22  profilanswer
 

C'est bien vu. Ma variable se trouve être justement déclarée en dessous de la structure Combat, qui est traitée dans la fonction. J'ai jeté un oeuil à la structure Combat et ai remarqué que action est en fait un tableau de booléan, je le déclare en entier et ça marche maitenant.
Un grand merci voilà un moment que je piétinais sur ce bug :)


Message édité par bkadoum le 13-09-2005 à 17:37:43
n°1199256
slash33
Posté le 14-09-2005 à 12:03:43  profilanswer
 

C'est quasiment illisible, mais il ne manquerait pas des tests de retour de fonctions dans ton code? Ca fait beaucoup de VOID je trouve...  :sarcastic:


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

  Variables qui se vide toute seule

 

Sujets relatifs
Fonction avec 2 variables?[RESOLU] Sessions - Quand variable vide
Variablesdeux variables dans une url (débutant)
Nom de variables dynamiques en ASP...[ASP.NET] La session se vide ...
Quel est la syntaxe pour utiliser les variables dans une fonctionManipulation sur le type des variables
iText : page events & variables globalesProblème de variables
Plus de sujets relatifs à : Variables qui se vide toute seule


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