memcmp ?? - C - Programmation
Marsh Posté le 26-01-2004 à 15:47:11
Tu as verifié si la mémoire que tu lisais avec memcmp est initialisée correctement ? Si tu est sous Linux, essaye de passer ton code à Valgrind tu veras, tu aprendras plein de choses.
Marsh Posté le 26-01-2004 à 15:59:23
Un petit coup de dump memory montre tout de suite pourquoi la comparaison n'est pas la meme: apres tes allocations memoires, il y a n'importe quoi dans les chaines allouées, tant que tu n'as pas fait le strcpy, et ensuite, il y a n'importe quoi entre le \0 de fin de chaine et le dernier octet du tableau non rempli.
A priori, les 2 tests pourraient donc repondre different. Si ca le fait pas au premier (et la fait au second), c'est que tu es probablement an mode debug, et que ton allocateur memoire doit remplir ce que tu alloues avec une chaine caracteristique, pour verifier des pbs de depassement... Tu utilises le meme allocateur ==> meme octet de remplissage. C'est pas le cas dans le second cas.
Mais a la base, si le premier test repond Egal, c'est a cause d'un effet de bord, donc.
A+,
Marsh Posté le 26-01-2004 à 16:22:49
J'ai l'impression qu'il cherche en fait a faire l'analogue pour l'operateur de comparaison du deep_copy pour l'opérateur de copie...
A+,
Marsh Posté le 26-01-2004 à 17:57:55
gilou a écrit : Un petit coup de dump memory montre tout de suite pourquoi la comparaison n'est pas la meme: apres tes allocations memoires, il y a n'importe quoi dans les chaines allouées, tant que tu n'as pas fait le strcpy, et ensuite, il y a n'importe quoi entre le \0 de fin de chaine et le dernier octet du tableau non rempli. |
arff oui, bien vu. merci monsieur
Marsh Posté le 26-01-2004 à 18:03:54
Reply
Marsh Posté le 26-01-2004 à 15:30:09
pourquoi les deux codes suivants ne sont pas identiques.
Dans le premier code, la fonction memcmp renvoie bien 0.Mais pas dans le deuxième code.why ???
code 1:
code 2: ( à priori équivalent)