——来看看源码的权威
memset主要用于为新申请的内存进行初始化,它是对较大的结构体和数组进行清零操作的一种最快方法。
函数原型:void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节用ch填充,并返回s。
对于这些最基本的函数,总有一种冲动想知道其是怎么实现的。
下面就是根据源码而来的memset实现:
void* memset(void* dst,int val, size_t count)
{
void* ret = dst;
while(count--)
{
*(char*)dst = (char)val;
dst = (char*)dst + 1; //移动一个字节
}
return ret;
}
下面是修改后的实现:
void* memset(void* dst,int val, size_t count)
{
char* tmpdst = (char*)dst;
char tmpval = (char)val;