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

  FORUM HardWare.fr
  Programmation
  C

  [Résolu] Chevauchement de mémoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Chevauchement de mémoire

n°1899307
Turkleton
I don't quite understand you
Posté le 25-06-2009 à 23:43:26  profilanswer
 

Y'a vraiment un truc que je pige pas là...
 
Voila le souci : dans un (gros) programme en C, j'ai deux tableaux de structures (différentes entre elles, appelons-les tata et toto, comme on nous l'a bien appris en cours d'algo).
Le problème, c'est que quand je donne une valeur à une des variables d'un élément de mon tableau de structure tata, ça me met à jour avec cette même valeur une des variables d'un élément de mon tableau de structure toto... [:sovxx]  
 
Je me demandais si vous aviez déjà vu ça. Ca pourrait venir d'un chevauchement dans la mémoire qui fait que ces deux variables partagent la même adresse ? (J'y pense en l'écrivant, j'ai pas encore maté la valeur des adresses, ça pourrait être un bon début...)
 
Et le mieux, c'est que ça ne me fait pas la même chose suivant les compilateurs ! Sous windows, je n'ai aucun problème (mais je ne sais plus quel compilateur j'utilise, faudrait que je re-regarde), alors que sous Linux (gcc), ça me le fait.
 
 [:turkleton]
 
EDIT : J'y crois pas, c'est bien ça, les deux variables ont la même adresse...  [:arrakys]  Y'a pas assez de mémoire sur mon ordi pour pas trouver deux segments différents ou quoi !?
Bin me v'la bien dans le caca, va falloir (ab)user du malloc... C'est la première fois que ça m'arrive, c'est courant ?
Autre question tant que j'y suis : quand estimez-vous qu'un malloc se justifie par rapport à juste déclarer la variable directement (avec allocation automatique par l'OS) ? Y'a une rêgle, ou bien chacun fait selon sa sensibilité ? (je précise que tous mes tableaux ont une dimension déterminée directement dans le code, pas à l'éxecution)


Message édité par Turkleton le 26-06-2009 à 02:07:58

---------------
If you think it could look good, then I guess it should
mood
Publicité
Posté le 25-06-2009 à 23:43:26  profilanswer
 

n°1899318
bjone
Insert booze to continue
Posté le 26-06-2009 à 01:17:57  profilanswer
 

C'est un problème très courant quand on a un code source buggué.

n°1899324
Turkleton
I don't quite understand you
Posté le 26-06-2009 à 01:52:00  profilanswer
 

bjone a écrit :

C'est un problème très courant quand on a un code source buggué.


Qu'est-ce que tu entends par "buggué" exactement ? Déclaration de mes variables ? Non-utilisation du malloc ?
 
J'aimerais bien savoir par quel chemin partir pour supprimer ce problème (que je contourne pour l'instant en utilsant un indice plus élevé dans mon premier tableau : autre adresse donc pas de chevauchement, mais c'est pas propre...)


---------------
If you think it could look good, then I guess it should
n°1899325
Turkleton
I don't quite understand you
Posté le 26-06-2009 à 02:07:08  profilanswer
 

[MODE LA GROSSE HONTE ON]
Ok, je viens de voir où était buggé mon code... Forcément, c'est pas bien de déclarer un tableau avec un certain nombre d'éléments au tout début de la naissance du programme, puis quelques mois plus tard avoir initialisé de plus en plus d'éléments de ce tableau... jusqu'à dépasser le chiffre de la déclaration...

Code :
  1. Mastruct une_struct[5];
  2. ...
  3. une_struct[8] = de la merde... ou en tout cas ce qui suivait dans la mémoire....


 
 [:squrrel]  
 
En tout cas merci Bjone, grâce à toi je me suis replongé dans mon code et j'ai enfin trouvé la testicule dans le potage !


---------------
If you think it could look good, then I guess it should
n°1899335
bjone
Insert booze to continue
Posté le 26-06-2009 à 09:14:08  profilanswer
 

En fait je voulais que tu nous communique ton code source, mais si t'as trouvé tout seul tant mieux :D
 
Mais la prochaine fois du source ou rien :)

Message cité 1 fois
Message édité par bjone le 26-06-2009 à 09:15:29
n°1899360
Turkleton
I don't quite understand you
Posté le 26-06-2009 à 10:44:53  profilanswer
 

bjone a écrit :

En fait je voulais que tu nous communique ton code source, mais si t'as trouvé tout seul tant mieux :D
 
Mais la prochaine fois du source ou rien :)


Ca aurait été compliqué, 40 Ko de code répartis sur 7 fichiers .c (et autant de .h), t'aurais eu de la lecture !  ;)


---------------
If you think it could look good, then I guess it should

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

  [Résolu] Chevauchement de mémoire

 

Sujets relatifs
VBA_Excel_ouverture automatique - Résolu[VBS][Résolu] Supprimer une ligne dans Excel
[Résolu] [DOS] Set dans un for[RESOLU ]base de données mysql
[Resolu]Erreur de compilation[résolu] WampsServer, phpBB et date.timezone... Régler fuseau horaire
PB Count (Résolu) et un souci de lien de paginationProblème d'alignement CSS dans les balises
[resolu]script pour sauvegarde incrémentale[Résolu]Récupérer les valeurs d'un formulaire dans $_POST
Plus de sujets relatifs à : [Résolu] Chevauchement de mémoire


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