J'ai donc un problème que je n'arrive pas à comprendre. Je suis en train d'écrire du code en C. J'ai continué à me retrouver avec des problèmes où la lecture du réseau fonctionnerait au hasard. J'ai finalement retracé le nombre de chaînes dans le code. Je ne peux pas le croire mais je l'ai vérifié assez en profondeur. La base de code est plutôt massive donc je ne suis pas sûr du nombre total de chaînes parité. Cependant je sais que si j'ajoute un nombre impair alors le programme fonctionne, et si j'ajoute un nombre pair il doesnt. Juste pour clarifier quand je dis que cela ne marche pas, il construit et exécute toujours, mais chaque fois que j'essaye de lire n'importe quoi sur le réseau tout ce que je reçois est 0. Quand je travaille, j'obtiens les bonnes données.Comportement inexplicable dans C. Odd vs Nombre pair de chaînes
Est-ce que quelqu'un a déjà entendu parler de quelque chose comme ça? Ou avez-vous une idée de ce qui pourrait causer cela? Je pouvais voir si la portion de données du programme devenait trop grande et commençait à gêner l'espace de l'autre code, mais le fait que ce soit un truc impair/pair me rend complètement confus.
grâce
EDIT (Ajout de plus d'informations):
La plate-forme est un dispositif conçu sur mesure. la base de code est redboot mais elle a été modifiée de manière significative pour le périphérique personnalisé.
Snipped par exemple:
// Cela fonctionne parce que son nombre impair de chaînes.
char* str1 = "test";
char* str2 = "test2";
char* str3 = "test3";
int i = strlen(str1) + strlen(str2) + strlen(str3);
......................................
si je devais changer la dernière ligne
int i = strlen(str1) + str(len2);
afin que str3 s'optimisé par le compilateur alors le code ne fonctionnera plus. J'ai testé cela plusieurs fois avec des longueurs de cordes différentes qui donnent tous le même comportement impair/pair. (Je viens d'être envoyé à un journal de débogage pour qu'il ne soit pas optimisé, rien de fantaisiste n'est fait avec). Edit2: Le code ci-dessus peut être placé n'importe où dans la base de code et provoque le même problème. Peu importe si elle a été exécutée ou non, ce qui me porte à croire que ce n'est pas un débordement de pile.
C'est probablement une erreur dans votre code, pas le nombre de lignes. Vous devriez ajouter beaucoup d'enregistrement et localiser le problème, puis (si vous en avez toujours besoin) posez une question détaillée ici. – sharptooth
Veuillez poster un code court et compilable qui illustre le problème. Réduire le problème pourrait vous aider à voir cette solution. – philant
D'accord. Cette publication doit isoler le problème. –