Structure en mémoire attaquée

themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 - 15 juil. 2004 à 17:15
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 17 juil. 2004 à 12:19
Bonjour à tous!
Voila, actuellement je travaille sur un vieux logiciel qui ait fais à 99% en C.
Dans ce programme, il y a beaucoup de structure en mémoire, dont une très importante de 1800 caractères. (Tout est en mémoire dans un souci de rapidité de réponse).
Cependant, j'ai pu remarqué que le programme plante car il semblerait que d'un coup, la structure est brisée. J'accède à une donnée de la structure sans problème, et à la ligne en dessous, plantage comme si la structure avait été mise à NULL (ce qui n'est pas le cas bien sûr).

Je voulais donc vous demandé si vous aviez une idée de POURQUOI cela semble arrivée (car c'est aléatoire, et je n'arrive pas a reproduire le problème en debug, sauf en forcant la structure à NULL (enfin son pointeur)).
Aussi, existe-t-il un moyen pour que la structure ne puisse pas être attaqué par autre chose (enfin la pile windows bien sur).

Si vous avez des idées, je suis preneur, car ce n'est pas évident de comprendre ce genre de bug.

Je vous remercie beaucoup par avance!!!

6 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
15 juil. 2004 à 21:01
on dirait que ton programme est maudit

serieusement ta pas de chance, car un logiciel qui plante à cause d'un pointeur à null...

montre du code, sinon ca risque d'etre difficile de t'aider
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
16 juil. 2004 à 10:26
Le pbl est que c'est un peu le bordel pour pouvoir vous montrer du code explicite. Mois, j'ai mis 3 mois à comprendre 80% lol!!

Mais cet évènement de modification de valeur, c'est donc possible alors? Pas moyen de VRAIMENT sécurisé les données en mémoire?
0
gillou1664 Messages postés 20 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 25 mars 2009
16 juil. 2004 à 11:07
Si tu n'arrive pas a reproduire l'erreur en mode Debug c'est probablement du au fait que la gestion de la mémoire est différente en Debug et en Release. Si je me souviens bien, la mémoire allouée est en quelquesorte protégée en mode Debug ce qui n'est pas le cas en Release. Ca peut être dû à ça (et dans ce cas je te souhaite bien du courage parceque c'est galère à résoudre comme problème).

--------------------------------------
Mangez des gnous!
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
16 juil. 2004 à 18:43
oui, il me semble qu'en debug les bords sont plus larges, c'est pour ca que l'exe est plus gros
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
17 juil. 2004 à 10:41
salut les gars!
En fait, l'exe qui a toujours été générer était un EXE debug. Mais par contre, j'ai entendu dire qu'en debug, il était pas rare que l'appli aille dire bonjour au debugger microsoft (mdm.exe).
Et ceci ne pourrait-il pas me poser de pbl justement?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 juil. 2004 à 12:19
tu ve dire qu'en realease ca marche ?

ya aussi quelques truc à expliquer

"dont une très importante de 1800 caractères"
ca ve dire quoi ? que sizeof retourne 1800 ? et 1800 octets c'est rien

" J'accède à une donnée de la structure sans problème, et à la ligne en dessous, plantage "

mais c'est quoi la ligne du dessous ? l'attribut suivant ?

dans ton programme tu a que des structures, mais en tableaux ? en listes ? allouée dynamiquement ?
0
Rejoignez-nous