NAME¶
memswap - swap the contents of two memory blocks
SYNOPSIS¶
#include <publib.h>
void memswap(void *block1, void *block2, size_t n);
DESCRIPTION¶
memswap will swap the contents of the two blocks pointed by its first two
arguments. The last argument gives the size of the memory blocks.
EXAMPLE¶
To swap two structs, one might do the following.
struct tm tm1, tm2;
memswap(&tm1, &tm2, sizeof(struct tm));
BUGS¶
Using
memswap to swap small portions of memory is inefficient. It is not
worth it to use it to swap variables of any of the basic types, for instance.
Use inline code for such cases. However, for large portions of memory, e.g.,
arrays, it is convenient.
memswap can't swap variables whose address can't be taken. This excludes
variables with the
register specifier and bitfields in structs. But
then, there is no way to write a function (or macro) that can handle any kind
of arguments. Life is hard.
SEE ALSO¶
publib(3)
AUTHOR¶
Lars Wirzenius (lars.wirzenius@helsinki.fi)