#include void *memset(void *ptr, int value, size_t sz) { value = (unsigned char)value; unsigned int realval = value | (value << 8) | (value << 16) | (value << 24); unsigned char *buf = ptr; size_t i = 0; for (i = 0; i < sz; i += sizeof(unsigned int)) { unsigned int *t = (unsigned int *)&buf[i]; *t = realval; } if (sz % sizeof(unsigned int)) { i -= sizeof(unsigned int); while (i < sz) { buf[i++] = value; } } return ptr; }