Pourquoi n'a pas la norme c une fonction memswap, qui probablement ressembler à:Pourquoi est pas là une fonction standard de memswap
int memswap(void *ptr1, void *ptr2, size_t nbytes)?
Je sais que ce serait facile d'écrire, mais je pense la libc pourrait faire quelques trucs géniaux pour l'accélérer comme certaines implémentations le font pour memcpy.
Le meilleur algorithme n'est pas nécessairement le votre.GCC a 'memset' comme mot-clé, et en fonction de ce que vous faites, il peut laisser l'appel de fonction, ou avoir une boucle for, ou avoir une boucle forflée, etc. Les compilateurs sont intelligents ces jours-ci. – Claudiu
Eh bien, les résultats naturels de ceux-ci sont: chevauchement -> UB, longueur == 0 -> no-op, devrait être en place, en utilisant éventuellement une quantité fixe de pile, null-pointeur -> UB. Rien de surprenant là-bas. – Deduplicator
Je suis d'accord que le meilleur algorithme peut dépendre de ce que vous faites, mais vous pouvez aussi écrire cette fonction 'memswap' sans tampon dynamique, en copiant char-by-char (sizeof (char) = 1byte) – Zorgatone