История изменений
Исправление Siborgium, (текущая версия) :
Какие еще аллокации в swap?
void swap (void* a, void* b, size_t n) {
size_t buf_size = 64; // можно больше, можно меньше
char buf[64];
size_t m = n % buf_size;
n /= buf_size;
for (size_t i = 0; i < n; i++) {
memcpy (buf, a, buf_size);
memcpy (a, b, buf_size);
memcpy (b, buf, buf_size);
}
memcpy (buf, a, m);
memcpy (a, b, m);
memcpy (b, buf, m);
}
Проверки сам допишешь.
Исходная версия Siborgium, :
Какие еще аллокации в swap?
void swap (void* a, void* b, size_t n) {
size_t buf_size = 64; // можно больше, можно меньше
char buf[64];
size_t m = n % buf_size;
n /= buf_size;
for (size_t i = 0; i < n; i++) {
memcpy (buf, a, buf_size);
memcpy (a, b, buf_size);
memcpy (b, buf, buf_size);
}
memcpy (buf, a, m);
memcpy (a, b, m);
memcpy (b, buf, m);
}