¿Por qué no tiene el nivel C una función memswap, lo que probablemente el siguiente aspecto:Por qué no hay una función estándar memswap
int memswap(void *ptr1, void *ptr2, size_t nbytes)?
Sé que sería fácil de escribir, pero creo la libc podría hacer algunos trucos increíbles para acelerarlo, como algunas implementaciones lo hacen para memcpy.
El mejor algoritmo no es necesariamente el suyo.GCC tiene 'memset' como palabra clave, y en función de lo que usted está configurando, puede salir de la llamada de función, o tener un bucle for, o tener un bucle desenrollado, etc. los compiladores son inteligentes en estos días. – Claudiu
Bueno, los resultados naturales de esos son: superposición -> UB, longitud == 0 -> no-op, debe estar en su lugar, posiblemente usando una cantidad fija de pila, null-pointer -> UB. Nada de ninguna manera sorprendente allí. – Deduplicator
Acepto que el mejor algoritmo puede depender de lo que esté haciendo, pero también podría escribir esta función 'memswap' sin un búfer dinámico, copiando char-by-char (sizeof (char) = 1byte) – Zorgatone